【问题标题】:InstallShield - relative file pathsInstallShield - 相对文件路径
【发布时间】:2011-10-18 06:18:29
【问题描述】:

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

【问题讨论】:

    标签: windows-installer installshield filepath


    【解决方案1】:

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

    【讨论】:

    • 请看下面@bvj提供的答案,为了完整起见,应标记为正确答案。
    • @Dror 它可以与 InstallShield 限量版一起使用吗?
    • @Eldho,不确定 - 检查这个问题:stackoverflow.com/questions/15390098/…
    • @Eldho,希望你现在已经解决了问题,但如果没有,请参阅我在此线程中关于限量版的帖子。
    【解决方案2】:

    使用免费的 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>&lt;ISPROJECTDIR&gt;..\..\MyProject\bin\Release\...
    

    其中 HTML 实体用于 变量周围的小于/大于符号。

    我使用 变量而不是 进行了第二次测试(应该是第一次)。在这个测试中,只需要一个父选择器:

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

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

    【讨论】:

    • 这是我找到的最佳解决方案,尤其是当您添加不属于项目的文件时。我使用的是相对变量 (将 替换为 >)而不是 .sln 目录。

    【解决方案3】:

    如果您的“源文件”的磁盘分区与 不同,这是我的解决方案:

    1. 用记事本打开 installshield 脚本文件 (*.isl);
    2. 知道预定义变量“”,它是您的安装解决方案文件夹的文件夹
    3. 将文件的绝对路径替换为“解决方案文件夹”的相对路径。即<VSSolutionFolder>..\..\exe\release\myapp.exe

    【讨论】:

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

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

      【讨论】:

      • 比编辑项目文件好多了; Build Action=Content 是我所缺少的。请注意,如果安装程序包含不需要的文件,请检查它们的 Build Action 是否设置为“None”。您可以通过右键单击“MyProject.Content Files”条目上的“解决项目输出”来查看将复制哪些文件。
      【解决方案5】:

      &lt;ISProjectFolder&gt; 是包含 Install Shield 项目的目录的宏。

      (在此页面上更容易获得答案...)

      【讨论】:

      • 为了确保人们在直接编辑项目文件 (.isl) 时不会感到疑惑,您需要 的转义符号。实际变量是 <ISProjectFolder>
      • 谢谢..这就是我想要的。
      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        相关资源
        最近更新 更多