Comment puis-je ajouter un fichier à un composant InstallShield en spécifiant un chemin d'accès relatif au projet InstallShield afin de faciliter la compilation du projet sur différentes machines?
Vous pouvez utiliser <path variables>
( voir documentation - ressuscité de Wayback, août 2018) pour pointer tous vos fichiers par rapport à eux.
Voir aussi cet article de blog .
Avec l'édition gratuite VS Limited d'InstallShield, la définition de chemins personnalisés ne semble pas possible. Il peut donc être nécessaire de pirater le fichier ISL en ne disposant que de quelques options de chemin prédéfinies.
Voici les variables de chemin prédéfinies que j'ai trouvées dans les documents Express 2013: (Vérifiez en cas de fautes de frappe)
Predefined Path Variable Value InstallScript Path Variable
--------------------------------------------------------------------------------------------------------------
<ProgramFilesFolder> C:\Program Files\ <PROGRAMFILES>
<CommonFilesFolder> C:\Program Files\Common Files\ <COMMONFILES>
<WindowsFolder> C:\Windows\ <WINDIR>
<SystemFolder> C:\Windows\System32\ <WINSYSDIR>
<ISProjectFolder> C:\InstallShield 2013 Projects\
<ISProjectDataFolder> <ISProjectFolder>\ProjectName <ISPROJECTDIR>
<ISProductFolder> C:\Program Files\InstallShield\2013
<ISRedistPlatformDependentFolder> C:\Program Files\InstallShield\2013\
.\Redist\Language Independent\i386
<ISRedistPlatformDependentExpressFolder> C:\Program Files\InstallShield\2013\
.\Redist\Language Independent\
.\i386 Express
Ma solution VS comprend à la fois un complément Outlook et un projet d'installation InstallShield LE. Bien que InstallShield incluait la sortie générée par AddIn et les assemblys associés, ni les fichiers manifeste ni vsto n'étaient inclus. J'ai donc dû les spécifier séparément. Cela a fonctionné pour un poste de travail; cependant, un autre poste de travail partageant la solution avait une structure de répertoire source différente donnant des sources non résolues.
Les fichiers manifeste et vsto ont été ajoutés par InstallShield avec des chemins absolus. Un lien symbolique commun à toutes les stations de travail aurait pu résoudre le problème, mais j'ai décidé de pirater les fichiers ISL pour voir s'il est possible d'utiliser des chemins relatifs, car le fichier ISL pourrait nécessiter un piratage de maintenance à l'avenir.
Afin d'obtenir le répertoire parent commun (c.-à-d. Le répertoire de solution dans mon cas), j'ai spécifié les deux sélecteurs parents suivants (..\..) dans l'ISL pour les artefacts spéciaux répertoriés dans <table name = " Fichier ">.
...<td><ISPROJECTDIR>..\..\MyProject\bin\Release\...
où les entités HTML sont utilisées pour les symboles inférieurs à/supérieurs à de la variable <ISPROJECTDIR>.
J'ai exécuté un deuxième test (qui aurait dû être le premier) en utilisant la variable <ISPROJECTFOLDER> au lieu de <ISPROJECTDIR>. Dans ce test, un seul sélecteur de parents était nécessaire:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
Jusqu'à présent, les choses semblent se résoudre correctement mais votre relativité peut varier.
<ISProjectFolder>
est la macro du répertoire contenant le projet Install Shield.
(Beaucoup plus facile d'avoir la réponse sur cette page ...)
Revenez dans votre projet et assurez-vous que tous vos fichiers que vous souhaitez copier ont des propriétés: Build Action = Content and Copy to output directory = Copy Always
Voici ma solution si la partition de disque de vos "fichiers source" n'était pas la même que <ISProjectFolder>:
Lorsque vous ajoutez le fichier, vous devez essayer de le faire être relatif au fichier de projet installshield. Si vous conservez le fichier .ism dans votre arborescence source, tous les exécutables que vous ajoutez doivent avoir un chemin d'accès par rapport à ce fichier.