InstallShield - 相对文件路径

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

请看下面@bvj提供的答案,为了完整起见,应标记为正确答案。 @Dror 它可以与 InstallShield 限量版一起使用吗? @Eldho,不确定 - 检查这个问题:***.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】:

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

    用记事本打开 installshield 脚本文件 (*.isl); 知道预定义变量“”,它是您的安装解决方案文件夹的文件夹 将文件的绝对路径替换为“解决方案文件夹”的相对路径。即<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 文件保留在源代码树中,那么您添加的任何可执行文件都应该具有相对于该文件的路径。

【讨论】:

以上是关于InstallShield - 相对文件路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在InstallShield项目中以静默方式安装msi文件

相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘spring

安装installshield问题

在指定路径创建所有目录

InstallShield 使用

HTML 文件中的相对路径