2009-05-13 6 views
4

J'ai la propriété d'installer ou non les raccourcis qui doivent être passés via des arguments de ligne de commande. Les conditions semblent fonctionner lorsque je définis les propriétés dans le fichier wxs, mais elles semblent être ignorées lors de leur définition via la ligne de commande. À partir du journal, je vois qu'ils sont en cours d'établissement:Les propriétés de condition WiX transmises à partir de la ligne de commande ne fonctionnent pas?

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, comme ils doivent être dans leur propre composant pour pouvoir définir des conditions sur eux, ils ne peuvent plus être des raccourcis annoncés. Comment obtiendriez-vous des raccourcis annoncés conditionnellement installés?

Code 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> 

répétés 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 les raccourcis, même si elles sont définies à 0 à la fois dans le xml et o n la ligne de commande. La ligne de commande que 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. Pas montré ici, mais j'ai réussi à manipuler la propriété ALLUSERS pour faire des registres par utilisateur ou par machine en faisant ALLUSERS = "" ou ALLUSERS = "2" Donc passer des propriétés devrait être possible, mais je ne suis pas sûr de ce que Je fais mal.

Répondre

10

Deux choses car il y a deux questions ici:

  1. Les raccourcis doivent être annoncés dans le même composant qui installe le fichier qu'ils pointent à. Cela est nécessaire parce que Windows Installer pointe un raccourci annoncé sur le KeyPath du composant. Vous ne pouvez donc pas utiliser les raccourcis annoncés si vous souhaitez qu'ils soient installés en option.

J'ai un blog post about how to create a shorcut and pass validation.

  1. Les propriétés que vous utilisez doivent être marquées comme sûres pour passer du processus d'installation de l'interface utilisateur au serveur.Pour ce faire il suffit de faire

    < Id propriété = "INSTALLSTARTMENUSHORTCUT" Secure = "yes" />

Notez que je ne l'ai pas ajouter un attribut de valeur. Si vous spécifiez une valeur, même si elle vaut 0, votre INSTALLSTARTMENUSHORCUT évaluera TRUE. Une propriété vide/non définie est FALSE, toute autre valeur est TRUE.

+0

Merci Rob. Il semble incohérent que si vous mettez directement 0 dans la propriété condition, elle est évaluée à false, mais dans une propriété, elle est évaluée à true. – Davy8

+0

Je ne fais pas les règles, je vis juste à côté d'elles.

+0

Et si vous voulez par défaut "oui" utiliser les conditions décrites ici https://www.firegiant.com/wix/tutorial/com-expression-syntax-miscellanea/expression-syntax/ au lieu de simplement évaluer si une propriété est mis à tous – Martin

0

Si IIRC publicité doit être initialisées à Oui

Vous avez vu cet exemple de MindCapers here, j'ai eu du mal avec les jusqu'à ce que je crée Les raccourcis l'entrée de Registre.

+0

Je ne peux pas définir Advertised = "yes" si ce n'est pas dans le même composant que le fichier auquel il est lié. Et si c'est dans le même composant, je ne peux pas ajouter une condition au raccourci et pas tout le composant – Davy8

2

Avez-vous essayé de marquer les propriétés comme sécurisées?

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

regardant la documentation du Shortcut Table je ne pense pas que vous pouvez obtenir des raccourcis conditionnellement annoncés. Nous contourner cela en installant un raccourci du menu Démarrer annoncé, et un raccourci du bureau ordinaire.

+0

Juste essayé et n'a pas semblé le faire. Curieusement, quand j'ai ajouté Secure = "Oui" tous les raccourcis installés, même si elles sont définies sur Value = "0" dans le fichier WiX – Davy8

Questions connexes