Установки - относительные пути к файлам

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

6 ответов


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


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

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

    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\InstallShield13  
    <ISRedistPlatformDependentFolder>            C:\Program Files\InstallShield13\
                                                    .\Redist\Language Independent\i386
    <ISRedistPlatformDependentExpressFolder>     C:\Program Files\InstallShield13\
                                                    .\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\...

до сих пор вещи, кажется, разрешаются правильно, но ваш теория относительности могут различаться.


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

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


  • фиксированные относительные пути для содержимого файла, копируемого ограниченным выпуском Install Shield в выходной каталог ( Visual Studio 2012 ) Шаги:
  • разверните проект установки в обозревателе решений, чтобы увидеть разделы 1,2,3,4,5,6
  • разверните " 2 "и дважды щелкните "файлы" Вы увидите страницу с четырьмя панелями: "файлы исходного компьютера" и "файлы конечного компьютера"
  • удалите жестко закодированные пути и файлы из пункта назначения файлы компьютера'
  • Нажмите в верхней левой панели, на проекте, который имеет ваши файлы как "файлы содержимого"
  • на верхней правой панели отобразятся "файлы содержимого из MyProject"
  • нажмите и перетащите это в нижнюю правую панель ("файлы конечного компьютера")

вернуться на ваш проект и убедитесь, что все ваши файлы, которые вы хотите скопировать свойства: Действие Сборки=Содержимое и Копировать в выходной каталог=копировать всегда


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

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

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