Установки - относительные пути к файлам
Как добавить файл в компонент 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><ISPROJECTDIR>..\..\MyProject\bin\Release\...
где HTML-объекты используются для окружающих символов меньше /больше, чем переменная.
Я провел второй тест (который должен был быть первым), используя переменной вместо . В этом тесте был необходим только один родительский селектор:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
до сих пор вещи, кажется, разрешаются правильно, но ваш теория относительности могут различаться.
<ISProjectFolder>
- это макрос для каталога, содержащего проект Install Shield.
(гораздо проще получить ответ на этой странице...)
- фиксированные относительные пути для содержимого файла, копируемого ограниченным выпуском Install Shield в выходной каталог ( Visual Studio 2012 ) Шаги:
- разверните проект установки в обозревателе решений, чтобы увидеть разделы 1,2,3,4,5,6
- разверните " 2 "и дважды щелкните "файлы" Вы увидите страницу с четырьмя панелями: "файлы исходного компьютера" и "файлы конечного компьютера"
- удалите жестко закодированные пути и файлы из пункта назначения файлы компьютера'
- Нажмите в верхней левой панели, на проекте, который имеет ваши файлы как "файлы содержимого"
- на верхней правой панели отобразятся "файлы содержимого из MyProject"
- нажмите и перетащите это в нижнюю правую панель ("файлы конечного компьютера")
вернуться на ваш проект и убедитесь, что все ваши файлы, которые вы хотите скопировать свойства: Действие Сборки=Содержимое и Копировать в выходной каталог=копировать всегда
вот мое решение, если ваш дисковый раздел "исходные файлы" не совпадал с
- откройте файл сценария installshield (*.isl) с блокнотом;
- знайте предопределенную переменную "
", это папка вашей папки решения для установки - замените абсолютный путь файла(файлов) на относительный путь к "папке решений". т. е.& lt;VSSolutionFolder & gt;..\..\exe\release\myapp.exe
когда вы добавляете файл, вы должны попытаться сделать его относительно файла проекта installshield. Если оставишь себе .файл ism в исходном дереве, то любые добавляемые исполняемые файлы должны иметь путь относительно этого файла.