/ / InstallShield: utilisation de LaunchAppAndWait () avec un chemin relatif - installshield, chemin relatif, script d'installation

InstallShield: utilisation de LaunchAppAndWait () avec un chemin relatif - installshield, chemin relatif, script d'installation

Supposons que j'ai la structure de dossiers suivante:

c: Testsetup.exe (c'est le lanceur d'installation principale)

c: TestFeature1setup.exe (Installation de feature1)

c: TestFeature2setup.exe (Installation de feature2)

J'ai créé la boîte de dialogue InstallShield personnalisée dans le programme de lancement de l'installation principale, où l'utilisateur peut cliquer sur le bouton approprié et exécuter l'installation de Feature1 ou Feature2. Je le fais en utilisant InstallScript LaunchAppAndWait() une fonction. Donc, ma question est: comment puis-je le faire en utilisant des chemins relatifs?

Par exemple:

LaunchAppAndWait("c:\Test\Feature1\setup.exe", "", LAAW_OPTION_WAIT) - it works.
LaunchAppAndWait("Feature1\setup.exe", "", LAAW_OPTION_WAIT) - doesn"t work.

Réponses:

1 pour la réponse № 1

Tout d'abord, pour des scénarios comme celui-ci, je voudraisrecommandent généralement de créer un projet Suite / Advanced UI. Une fois cette opération effectuée, vous pouvez associer directement des packages (vos fichiers setup.exe inclus, par exemple, mais les fichiers .msi ou .hdr sous-jacents sont de meilleurs choix) avec des fonctionnalités de la suite que vous installez.

Mais en supposant que ce soit un changement trop important pourvous, ou un mauvais choix pour une autre raison, vous devriez être capable de créer un chemin absolu qui s’ajuste à l’emplacement de votre installation. Faites cela en référençant soit PACKAGE_LOCATION s'il s'agit d'un projet wrapper InstallScript ou de la propriété SETUPEXEDIR s'il s'agit d'un projet d'encapsuleur MSI de base ou InstallScript. En supposant l'ancien, cela ressemblerait à ceci:

LaunchAppAndWait(PACKAGE_LOCATION ^ "Feature1\setup.exe", "", LAAW_OPTION_WAIT);

Pour cette dernière, la dernière étape serait semblable, mais il faudrait d’abord récupérer la valeur de SETUPEXEDIR en utilisant MsiGetProperty.