Question WiX Création correcte du raccourci sur le bureau


Il y a deux réponses sur Créer un raccourci vers le bureau à l'aide de WiX

Ces deux réponses n'ont aucune explication réelle de ce qui se passe. Quelle est la différence entre ces deux méthodes de création de raccourcis? La première méthode est conforme à WiX - Créer un raccourci Documentation.

La seconde méthode a un MergeRedirectFolder sur lequel je n'arrive pas à trouver de documentation, et je ne comprends pas pourquoi le deuxième exemple ne nécessite pas le paramètre de registre, car selon WiX Documentation, un paramètre de registre:

est requis car un raccourci ne peut pas servir de KeyPath pour un composant lors de l'installation de raccourcis non annoncés pour les utilisateurs actuels.

Est-ce que cela signifie que la deuxième méthode est un raccourci annoncé? Ou est-ce une réponse qui suppose que l'utilisateur installe par machine? Ou suis-je perdu dans la sauce? (Assez possible - deuxième jour à essayer d'utiliser WiX, depuis que Microsoft m'a forcé à suivre ce chemin.)

Le premier:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="DesktopFolder" Name="Desktop">
    <Component Id="ApplicationShortcutDesktop" Guid="*">
      <Shortcut Id="ApplicationDesktopShortcut"
         Name="Text under your icon"
         Description="Comment field in your shortcut"
         Target="[MYAPPDIRPROPERTY]MyApp.exe"
         WorkingDirectory="MYAPPDIRPROPERTY"/>
      <RemoveFolder Id="DesktopFolder" On="uninstall"/>
      <RegistryValue
        Root="HKCU"
        Key="Software/MyAppName"
        Name="installed"
        Type="integer"
        Value="1"
        KeyPath="yes"/>
    </Component>
  </Directory>
    <Directory Id="ProgramFilesFolder" Name="PFiles">
      <Directory Id="MyCompany" Name="MyCompany">
        <Directory Id="MYAPPDIRPROPERTY" Name="MyAppName">
      </Directory>
    </Directory>
  </Directory>

Le deuxième:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="DesktopFolder" SourceName="Desktop" />
  <Directory Id="MergeRedirectFolder">
    <Component Id="MyExeComponent" Guid="*">
      <File Id="MyExeFile" Source="$(var.ExeSourcePath)" KeyPath="yes">
        <Shortcut
          Id="DesktopShortcut"
          Directory="DesktopFolder"
          Name="$(var.ShortcutName)"
          WorkingDirectory="MergeRedirectFolder" />
      </File>
    </Component>
  </Directory>
</Directory>

10
2018-01-03 18:01


origine


Réponses:


Caveat: Le commentaire de Doc, puisque aucun exemple ne spécifiait le Advertise attribut, ni créer un raccourci annoncé. Je ne me souviens pas de ce qui m'a amené à écrire la réponse ci-dessous. il semble probable que ce soit incorrect. Je vais laisser la réponse avec tact au cas où il y aurait une vérité subtile derrière elle.


Le premier exemple crée un raccourci annoncé; le second crée un raccourci non annoncé. Les règles pour les deux types de raccourcis sont décrites avec le Table de raccourcis  Cible colonne.

Un raccourci non annoncé est un raccourci Windows standard, comme vous le feriez avec Windows Explorer. Un raccourci publié améliore la résilience en vérifiant que tous les composants de la fonctionnalité sont installés lorsque le raccourci est activé.


5
2018-06-17 17:44