Как добавить файл в компонент InstallShield, указав относительный путь к проекту InstallShield, чтобы упростить компиляцию проекта на разных машинах?
InstallShield - относительные пути к файлам
Ответ 1
Вы можете использовать <path variables>
(см. документацию), чтобы указать все ваши файлы относительно них.
Также см. этот пост в блоге.
Ответ 2
С бесплатным VS Limited Edition от InstallShield настройка пользовательских путей не представляется возможной. Поэтому взломать файл ISL может потребоваться наличие только нескольких предопределенных параметров пути.
Вот предопределенные переменные пути, которые я нашел в документах Express Express 2013: (Verify в случае опечаток)
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 включал в себя выходные данные Addon и связанные сборки, ни файлы манифеста, ни vsto не были включены. Поэтому мне нужно было указать их отдельно. Это работало на одной рабочей станции; однако другая рабочая станция, использующая решение, имела другую структуру исходного каталога, предоставляющую нерешенные источники.
Файлы манифеста и vsto были добавлены InstallShield с абсолютными путями. Символьная ссылка, общая для всех рабочих станций, могла решить проблему, но я решил взломать ISL файлы, чтобы увидеть, можно ли использовать относительные пути, реализующие ISL файл, может потребоваться взлом в обслуживании в будущем.
Чтобы получить общий родительский каталог (т.е. каталог решений в моем случае), я указал следующие два родительских селектора (.. \..) в ISL для специальных артефактов, перечисленных в таблице < name= "Файл" > .
...<td><ISPROJECTDIR>..\..\MyProject\bin\Release\...
где объекты HTML используются для окружающих символов меньшего или большего размера, чем <ISPROJECTDIR> .
Я выполнил второй тест (который должен был быть первым), используя переменную <ISPROJECTFOLDER> вместо <ISPROJECTDIR> . В этом тесте необходим только один родительский селектор:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
До сих пор все кажется правильным, но ваша относительность может быть разной.
Ответ 3
<ISProjectFolder>
- это макрос для каталога, содержащего проект Install Shield.
(Намного легче получить ответ на этой странице...)
Ответ 4
- фиксированные относительные пути для содержимого файла, который должен быть скопирован с помощью Install Shield Limited Edition в выходной каталог (Visual Studio 2012) Шаги:
- Разверните проект установки в Обозревателе решений, чтобы увидеть разделы 1,2,3,4,5,6
- Разверните "2" и дважды щелкните "Файлы", Вы увидите страницу с четырьмя панелями: с "Исходными компьютерными файлами" и "Файлы компьютеров назначения"
- удалите свои жестко закодированные пути и файлы из файлов "Целевой компьютер"
- Нажмите на верхнюю левую панель, в проекте, где ваши файлы находятся в разделе "Файлы содержимого"
- верхняя правая панель отобразит "Content Files from MyProject"
- щелкните и перетащите его в нижнюю правую панель ( "файлы компьютера назначения" )
Вернитесь в свой проект и убедитесь, что все ваши файлы, которые вы хотите скопировать, имеют свойства: Build Action = Content а также Копировать в каталог вывода = Копировать всегда
Ответ 5
Вот мое решение, если ваш дисковый раздел "исходных файлов" не был таким же, как <ISProjectFolder> :
- Откройте файл installshield script (*.isl) с помощью блокнота;
- знать предопределенную переменную "<VSSolutionFoler> ", это папка вашей папки с установочным решением.
- Замените абсолютный путь файла (ов) на относительный путь к файлу решения. то есть и lt; VSSolutionFolder & GT;.. \..\EXE\выпуск\myapp.exe
Ответ 6
Когда вы добавляете файл, вы должны попробовать, чтобы он был относительно файла проекта installshield. Если вы сохраняете файл .ism в исходном дереве, то любые исполняемые файлы, которые вы добавляете, должны иметь путь к этому файлу.