使用免费的 VS 限量版 InstallShield,设置自定义路径看起来不太可能。因此,在只有几个预定义路径选项可用的情况下,可能需要破解 ISL 文件。
以下是我在 2013 Express 文档中找到的预定义路径变量:(验证是否存在拼写错误)
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><ISPROJECTDIR>..\..\MyProject\bin\Release\...
其中 HTML 实体用于周围的小于/大于符号多变的。
我使用以下命令进行了第二次测试(这应该是第一个测试)变量而不是。在此测试中,只需要一个父选择器:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
到目前为止,事情似乎解决正确,但你的相对论可能会有所不同。