web-dev-qa-db-fra.com

InstallShield - chemins de fichiers relatifs

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?

28
Cornel

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 .

17
Dror

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>&lt;ISPROJECTDIR&gt;..\..\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>&lt;ISPROJECTFOLDER&gt;..\MyProject\bin\Release\...

Jusqu'à présent, les choses semblent se résoudre correctement mais votre relativité peut varier.

31
bvj

<ISProjectFolder> est la macro du répertoire contenant le projet Install Shield.

(Beaucoup plus facile d'avoir la réponse sur cette page ...)

13
Matt Connolly
  • chemins relatifs fixes pour le contenu du fichier à copier par le Install Shield Limited Edition dans le répertoire de sortie (Visual Studio 2012) Étapes:
  • Développez votre projet d'installation dans l'Explorateur de solutions pour afficher les sections 1,2,3,4,5,6
  • Développez "2" et double-cliquez sur "Fichiers" Vous verrez une page à quatre panneaux: avec "Fichiers de l'ordinateur source" et "Fichiers de l'ordinateur de destination"
  • supprimez vos chemins et fichiers codés en dur des "fichiers de l'ordinateur de destination"
  • Cliquez dans le panneau supérieur gauche, sur le projet qui a vos fichiers en tant que "fichiers de contenu"
  • le panneau supérieur droit affichera "Fichiers de contenu de MyProject"
  • cliquez et faites-le glisser vers le panneau en bas à droite (les "fichiers de l'ordinateur de destination")

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

4
Dwarf

Voici ma solution si la partition de disque de vos "fichiers source" n'était pas la même que <ISProjectFolder>:

  1. Ouvrez le fichier de script installshield (* .isl) avec le bloc-notes;
  2. connaître la variable prédéfinie "<VSSolutionFoler>", c'est le dossier de votre dossier de solution d'installation
  3. Remplacez le chemin absolu du ou des fichiers par le chemin relatif de "solution foler". c'est-à-dire & lt; VSSolutionFolder & gt; ..\..\exe\release\myapp.exe
1
user3575025

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.

0
Anthony Giorgio