我该如何将一个文件添加到InstallShield组件中,并指定相对路径到InstallShield项目,以便在不同的机器上容易编译项目?
我该如何将一个文件添加到InstallShield组件中,并指定相对路径到InstallShield项目,以便在不同的机器上容易编译项目?
使用免费的InstallShield VS Limited Edition,设置自定义路径似乎不可能。因此,在仅有几个预定义路径选项可用的情况下,可能需要修改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使用绝对路径添加了清单和vsto文件。一个符号链接可以解决所有工作站的问题,但我决定修改ISL文件,看看是否可以使用相对路径来实现。我意识到ISL文件可能需要维护。
为了获取共同的父目录(即我的情况下的解决方案目录),我在ISL中为特定工件列表<表格名称="文件">指定了以下两个父选择器(..\..)。
...<td><ISPROJECTDIR>..\..\MyProject\bin\Release\...
HTML实体用于包围<ISPROJECTDIR>变量的尖括号符号。
我进行了第二次测试(本应该是第一次),使用<ISPROJECTFOLDER>变量而不是<ISPROJECTDIR>。在这个测试中,只需要一个父选择器:
...<td><ISPROJECTFOLDER>..\MyProject\bin\Release\...
目前为止,事情似乎正在正确解决,但你的相对性可能会有所不同。
<ISProjectFolder>
是包含Install Shield项目的目录的宏。
(在此页面上得到答案要容易得多...)
返回到您的项目并确保您想要复制的所有文件都具有以下属性: Build Action = Content 和 Copy to output directory = Copy Always
当你添加文件时,应尝试使其相对于InstallShield项目文件。如果您将.ism文件保留在源代码树中,则添加的任何可执行文件都应该相对于该文件的路径。