如何将文件添加到InstallShield组件,指定InstallShield项目的相对路径,以便在不同的计算机上轻松编译项目?
答案 0 :(得分:30)
使用免费的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文件都没有包含在内。所以我需要单独指定这些。这适用于一个工作站;但是,共享解决方案的另一个工作站具有不同的源目录结构,从而提供未解析的源。
InstallShield使用绝对路径添加了manifest和vsto文件。所有工作站共有的符号链接可以解决问题,但我决定破解ISL文件以查看是否可以使用相对路径来实现ISL文件可能需要维护黑客未来。
为了获得公共父目录(即我的情况下的解决方案目录),我在ISL中为&lt; table中列出的特殊工件指定了以下两个父选择器(.. \ ..)名称=&#34;文件&#34;&GT; 强>
...<td><ISPROJECTDIR>..\..\MyProject\bin\Release\...
其中HTML实体用于&lt; ISPROJECTDIR&gt; 变量的周围小于/大于符号。
我使用&lt; ISPROJECTFOLDER&gt; 变量而不是&lt; ISPROJECTDIR&gt; 进行第二次测试(应该是第一次测试)。在此测试中,只需要一个父选择器:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
到目前为止,事情似乎正确解决了,但相对性可能会有所不同。
答案 1 :(得分:17)
您可以使用<path variables>
(see documentation - 从Wayback,2018年8月复活)将所有文件指向它们。
另请参阅this blog post。
答案 2 :(得分:13)
<ISProjectFolder>
是包含Install Shield项目的目录的宏。
(在这个页面上更容易得到答案......)
答案 3 :(得分:4)
返回项目并确保要复制的所有文件都具有以下属性: 构建行动=内容 和 复制到输出目录=始终复制
答案 4 :(得分:1)
如果您的&#34;源文件&#34;的磁盘分区与&lt; ISProjectFolder&gt;不相同,那么这是我的解决方案:
答案 5 :(得分:0)
添加文件时,应尝试将其与installshield项目文件相关。如果您将.ism文件保留在源代码树中,那么您添加的任何可执行文件都应该具有相对于该文件的路径。