Question

Récemment, nous avons ajouté une fonctionnalité à notre programme d'installation qui a nécessité deux des raccourcis de bureau à renommer légèrement (le numéro de version a été ajouté au nom). Je vais avoir des problèmes pour obtenir le programme d'installation pour remplacer les anciens raccourcis par les nouveaux. Lorsque le problème a d'abord été rapporté, les nouveaux raccourcis ont été installés, mais les anciens n'étaient pas enlevés. Après avoir travaillé sur le problème, je vais avoir un problème mixte: Un des anciens raccourcis est supprimé (jusqu'à présent, si bien), mais l'autre n'est pas (pas si bon), et dans les deux cas, les nouveaux raccourcis ne sont pas installés (encore pire). Je l'ai essayé de changer le GUID sur chacun des composants qui installent ces raccourcis, et je l'ai même, à un moment donné, essayé de changer la propriété ProductCode dans chacun des modules de fusion responsables des raccourcis, mais rien ne semble faire le choix comportement (avec l'ancien et le nouveau lors de la mise à niveau).

Avec seulement les composants pertinents re-Assisté, voici ce que le fichier journal affiche pour l'installation des états (pour aider à la mise au point, j'ai rebaptisés les composants un peu pour que je puisse dire ceux qui sont de l'ancienne construction et qui sont de la nouvelle):

...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local;   Request: Absent;   Action: Absent
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local;   Request: Absent;   Action: Null
...

Comme vous pouvez le voir dans le journal, les nouveaux raccourcis devrait aller dans dans les deux cas, mais ils ne sont pas. Et je suis à une perte pour expliquer pourquoi le programme d'installation est en train de faire des choses différentes avec les deux anciens raccourcis.

Pour votre information:. Mon environnement de dev est Wise Installation Studio 7.0

Modifier J'ai tout remis à ce qu'il était auparavant, à l'exception du ProductVersion actuel et ProductCode. Après avoir fait cela, le programme d'installation laisse les anciens raccourcis installés mais ne pas installer les nouveaux. (Ce comportement est différent de ce qui a été initialement rapporté et que je suis en mesure de reproduire, par exemple, les anciens raccourcis ont été laissés installés et les nouveaux (rebaptisés) les ont également été installés.) Après re-Guider les deux composants concernés, le programme d'installation supprime les anciens raccourcis mais ne fonctionne toujours pas installer les nouveaux. (C'est ce qui se passe sur XP.)

Les lignes correspondantes dans le journal après re-Guider les composants sont comme suit:

...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local;   Request: Absent;   Action: Absent
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local;   Request: Absent;   Action: Absent
...

Les deux premières lignes semblent indiquer que les nouveaux raccourcis sont en cours d'installation, et pourtant ils ne sont pas. Une réparation après installera les nouveaux raccourcis.

Lorsque la copie du programme d'installation dans lequel le problème d'origine (les anciens et les nouveaux raccourcis existent après une mise à niveau) pourrait être dupliqué est exécuté, l'action a rapporté les deux dernières lignes ci-dessus est nul au lieu de l'absence.

Edit 2: Le comportement actuel est que les anciens raccourcis sont installés rester, et les nouvelles ne sont pas installés. Quand je re-GUID leurs composants, les anciens raccourcis sont supprimés et les nouveaux ne sont pas encore installés. J'ai essayé des solutions de Christopher Painter, mais est allé ni nulle part. (Voir mon commentaire sur cette réponse.) Il doit y avoir un moyen d'obtenir les nouveaux raccourcis installés versionnés en place des anciens unversioned. Est-ce qu'il ya quelqu'un là-bas peut fournir une solution qui fonctionne?

Edit 3: Il se trouve, le nouveau comportement où les nouveaux raccourcis ne sont pas s'installés était dû à une erreur que je l'avais fait à obtenir les fichiers source, et ceux qui sont allés dans le programme d'installation ne sont pas aussi à jour que ceux qui devaient être remplacés. Une fois le plus à des fichiers de date ont été compilés dans le programme d'installation, je suis en mesure d'obtenir les résultats souhaités (anciens raccourcis sur, nouveaux dans). (Voir ma réponse pour plus d'informations).

Était-ce utile?

La solution 2

Comme nous tout re-version pour chaque chiffre d'affaires (le numéro de build est toujours de plus en plus), il est une mise à jour majeure en ce qui WI concerne, donc une fois que je suis le plus à des fichiers de date dans l'installation, reGUIDing les composants contiennent les raccourcis de bureau qui devaient être remplacés obtenu les résultats que je cherchais.

Autres conseils

Un raccourci est juste un fichier .lnk dans un répertoire. Vous ne renommez pas un raccourci, vous supprimez et créez un nouveau. Si vous effectuez une mise à jour majeure la suppression / réinstallation doit gérer cela, mais si vous faites une petite mise à jour, il va laisser l'ancien derrière parce que le nouveau savoir ne marche pas MSI à ce sujet.

Deux possibilités:

1) Utilisez la table RemoveFile pour se débarrasser de l'ancien raccourci.

2) Gardez l'ancien composant autour de l'ancien fichier et utiliser l'attribut transitif avec une condition de non-op (google comment supprimer un fichier mineur mise à niveau aka perforation modèle composants) pour provoquer le composant et son fichier / raccourci être retiré. Créer un nouveau composant avec un nouveau nom de fichier et le nouveau nom de raccourci à installer pour obtenir le nouveau raccourci.

Je pense que je vais essayer # 1 d'abord. : -)

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