InstallShield - относительные пути к файлам - PullRequest
27 голосов
/ 02 августа 2011

Как добавить файл в компонент InstallShield, указав относительный путь к проекту InstallShield, чтобы упростить компиляцию проекта на разных компьютерах?

Ответы [ 6 ]

31 голосов
/ 14 мая 2014

В бесплатной версии VS LimitedS InstallShield установка пользовательских путей не представляется возможной. Таким образом, взлом файла ISL может потребоваться при наличии только нескольких предопределенных параметров пути.

Вот предопределенные переменные пути, которые я нашел в документах Express 2013 года: (Проверьте в случае опечаток)

    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

Мое решение VS включает в себя как Outlook AddIn, так и проект установки InstallShield LE. Хотя InstallShield включал сгенерированные AddIn выходные данные и связанные сборки, ни файлы манифеста, ни файлы vsto не были включены. Поэтому мне нужно было указать это отдельно. Это работало на одной рабочей станции; однако другая рабочая станция, использующая это решение, имела другую структуру каталогов с исходными файлами, что давало неразрешенные источники.

Файлы манифеста и vsto были добавлены InstallShield с абсолютными путями. Символьная ссылка, общая для всех рабочих станций, могла бы решить проблему, но я решил взломать файлы ISL, чтобы увидеть, возможно ли использовать относительные пути, понимающие, что файл ISL может потребовать взлома обслуживания в будущем.

Чтобы получить общий родительский каталог (т. Е. Каталог решения в моем случае), я указал следующие два родительских селектора (.. \ ..) в ISL для специальных артефактов, перечисленных в <имя таблицы = "Файл"> .

...<td>&lt;ISPROJECTDIR&gt;..\..\MyProject\bin\Release\...

где объекты HTML используются для окружающих символов «меньше / больше» переменной .

Я провел второй тест (который должен был быть первым), используя переменную вместо . В этом тесте был нужен только один родительский селектор:

...<td>&lt;ISPROJECTFOLDER&gt;..\MyProject\bin\Release\...

Пока кажется, что все решается правильно, но ваша относительность может отличаться.

17 голосов
/ 05 августа 2011

Вы можете использовать <path variables> ( см. Документацию - воскрес из Wayback, август 2018 г.), чтобы указать все ваши файлы относительно них.Также смотрите этот пост .

13 голосов
/ 18 апреля 2013

<ISProjectFolder> - это макрос для каталога, содержащего проект Install Shield.

(гораздо проще получить ответ на этой странице ...)

4 голосов
/ 08 мая 2013
  • фиксированные относительные пути для содержимого файла, которое будет скопировано с помощью Install Shield Limited Edition в выходной каталог (Visual Studio 2012) Шаги:
  • Разверните проект установки в обозревателе решений, чтобы увидеть1,2,3,4,5,6 секций
  • Разверните «2» и дважды щелкните «Файлы». Вы увидите страницу с четырьмя панелями: «Файлы исходного компьютера» и «Файлы конечного компьютера»
  • удалите жестко запрограммированные пути и файлы из «файлов конечного компьютера»
  • Нажмите в верхней левой панели проекта, в котором ваши файлы называются «Файлы содержимого» * ​​1010 *
  • в верхней правой панели отобразится «Файлы содержимого из MyProject»
  • щелкните и перетащите его на нижнюю правую панель («Файлы конечного компьютера»)

Вернитесь в свой проект иубедитесь, что все ваши файлы, которые вы хотите скопировать, имеют свойства: Build Action = Content и Copy to output directory = Copy Always

1 голос
/ 26 апреля 2014

Вот мое решение, если раздел диска ваших «исходных файлов» не совпадает с :

  1. Откройте файл сценария installshield (* .isl) с помощью блокнота;
  2. знает предопределенную переменную "", это папка вашей папки с установочным решением
  3. Замените абсолютный путь к файлу (файлам) на относительный путь к "раскрытию решения".т.е. & lt; VSSolutionFolder & gt; .. \ .. \ exe \ release \ myapp.exe
0 голосов
/ 02 августа 2011

Когда вы добавляете файл, вы должны попытаться установить его относительно файла проекта installshield.Если вы сохраняете файл .ism в своем дереве исходных текстов, то все добавляемые исполняемые файлы должны иметь путь относительно этого файла.

...