InstallShield - 相对文件路径

时间:2011-08-02 13:10:13

标签: windows-installer installshield filepath

如何将文件添加到InstallShield组件,指定InstallShield项目的相对路径,以便在不同的计算机上轻松编译项目?

6 个答案:

答案 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>&lt;ISPROJECTDIR&gt;..\..\MyProject\bin\Release\...

其中HTML实体用于&lt; ISPROJECTDIR&gt; 变量的周围小于/大于符号。

我使用&lt; ISPROJECTFOLDER&gt; 变量而不是&lt; ISPROJECTDIR&gt; 进行第二次测试(应该是第一次测试)。在此测试中,只需要一个父选择器:

...<td>&lt;ISPROJECTFOLDER&gt;..\MyProject\bin\Release\...

到目前为止,事情似乎正确解决了,但相对性可能会有所不同。

答案 1 :(得分:17)

您可以使用<path variables>see documentation - 从Wayback,2018年8月复活)将所有文件指向它们。
另请参阅this blog post

答案 2 :(得分:13)

<ISProjectFolder>是包含Install Shield项目的目录的宏。

(在这个页面上更容易得到答案......)

答案 3 :(得分:4)

  • 修复了由Install Shield Limited Edition复制到输出目录的文件内容的相对路径(Visual Studio 2012) 步骤:
  • 在解决方案资源管理器中展开您的安装项目,以便看到1,2,3,4,5,6部分
  • 展开“2”并双击“文件” 您将看到一个四个面板页面:“源计算机文件”和“目标计算机文件”
  • 从“目标计算机的文件”中删除您的硬编码路径和文件
  • 点击左上方面板,将您的文件设为“内容文件”
  • 的项目
  • 右上方的面板将显示“来自MyProject的内容文件”
  • 点击并将其拖动到右下方面板(“目标计算机的文件”)

返回项目并确保要复制的所有文件都具有以下属性: 构建行动=内容 和 复制到输出目录=始终复制

答案 4 :(得分:1)

如果您的&#34;源文件&#34;的磁盘分区与&lt; ISProjectFolder&gt;不相同,那么这是我的解决方案:

  1. 使用记事本打开installshield脚本文件(* .isl);
  2. 知道预定义变量&#34;&lt; VSSolutionFoler&gt;&#34;,它是您的安装解决方案文件夹的文件夹
  3. 将文件的绝对路径替换为&#34;解决方案的相对路径&#34;。即&amp; LT; VSSolutionFolder&安培; GT; .. \ .. \ EXE \释放\ MyApp.exe的

答案 5 :(得分:0)

添加文件时,应尝试将其与installshield项目文件相关。如果您将.ism文件保留在源代码树中,那么您添加的任何可执行文件都应该具有相对于该文件的路径。