Question

J'ai une propriété pour installer si des raccourcis qui doivent être transmis par les arguments de ligne de commande. Les conditions semblent fonctionner quand je définir les propriétés dans le fichier wxs, mais ils semblent être ignorés lors de leur réglage via la ligne de commande. À partir du journal, je vois qu'ils sont définis:

MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.

Cependant, ils les raccourcis ne sont pas installés.

En outre, il semble que, car ils doivent être dans leur propre composant pour être en mesure de fixer des conditions sur eux, ils ne peuvent plus être raccourcis annoncés. Comment voulez-vous obtenir conditionnellement installé des raccourcis annoncés?

Code de raccourci actuel:

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
  <Condition>INSTALLSTARTMENUSHORTCUT</Condition>
  <Shortcut Id="StartMenuServerShortcut"
    Directory="ProgramMenuDir"
    Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
    Target="[!FileEXE]"
    Icon="Icon.ico" />
</Component>

Et répété pour d'autres raccourcis

Edit:

Essayer ce que Sacha a suggéré et en ajoutant ce qui suit:

<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>

Maintenant, il installe tous les raccourcis, même si elles sont mises à 0 à la fois dans le fichier XML et sur la ligne de commande. La ligne de commande Je passe est:

msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb

essayé de mettre les valeurs entre guillemets et toujours pas aller. Non montré ici, mais j'ai réussi à manipuler la propriété ALLUSERS à faire registres par utilisateur ou par machine en faisant ALLUSERS = « » ou ALLUSERS = « 2 » Donc, en passant dans les propriétés devrait être possible, mais je ne suis pas sûr de ce que Je fais mal.

Était-ce utile?

La solution

Deux choses car il y a deux questions ici:

  1. Raccourcis doit être annoncés dans le même composant qui installe le fichier qu'ils pointent à. Ce requried parce que les points Windows Installer un Shortcut annoncé au KeyPath du composant. Donc, vous ne pouvez pas utiliser si vous annoncés Les raccourcis voulez être éventuellement installés.

J'ai blog sur la façon de créer un raccourci et passer la validation .

  1. Les propriétés que vous utilisez doivent être marqués sûr de passer de la procédure d'installation de l'interface utilisateur du côté serveur. Pour ce faire il suffit de faire

Notez que je n'ai pas ajouté un attribut de valeur. Si vous spécifiez une valeur, même si elle est 0, votre INSTALLSTARTMENUSHORCUT évaluera TRUE. Ebauche / Propriété non définie est FAUX, toute autre valeur est VRAI.

Autres conseils

Avez-vous essayé de marquer les propriétés en sécurité?

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />

En regardant la documentation raccourci table Je ne pense pas que vous pouvez obtenir des raccourcis conditionnellement annoncés. Nous contourner ce problème en installant un raccourci menu Démarrer Annoncées, et un raccourci sur le bureau régulier.

Si IIRC a une annonce à initialisées à Oui

Vous avez vu cet exemple de MindCapers , j'ai eu des problèmes avec les jusqu'à ce que je Les raccourcis créé l'entrée de registre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top