【问题标题】:Installshield 12: Changing the destination of a merge module at run timeInstallshield 12:在运行时更改合并模块的目标
【发布时间】:2010-11-30 23:21:21
【问题描述】:

我正在尝试在运行时更改合并模块的目的地...

让我解释一下: 我有一个合并模块,它的目标设置为 [SystemFolder] 文件夹。

而且我有很多 MSI 项目都指向这个合并模块,都将合并模块(组件)目标指向“(使用合并模块的默认目标)”。

问题: MSI 项目之一需要将合并模块安装到“通用文件”位置(而不是 systyem32 文件夹)。

因此,如果我将 MSI 项目中的合并模块(组件)目标更改为 [CommonFileFolder],则不会发生任何事情(因为合并模块目标仍设置为 [SystemFolder])

或者,如果我将合并模块目标更改为 [TARGETDIR],然后将 MSI 项目中的合并模块(组件)目标更改为 [CommonFileFolder],则可以正常工作。但是我的所有其他 MSI 项目随后会将合并模块安装到根驱动器,因为其他 MSI 项目仍然将合并模块(组件)目标指向“(使用合并模块的默认目标)”。

我不能做这两件事: 我不想将每个 MSI 项目都更改为 [SystemFolder] 或 [CommonFileFolder])。

而且我也不想创建两个相同的合并模块(一个指向 [SystemFolder] 另一个指向 [CommonFileFolder]),所以我只需要更改一个 MSI 项目

如果 MSI 项目将合并模块指向“(使用合并模块的默认目标)”,它们是我可以更改合并模块目标的一种方式吗?

例如: 如果 TARGETDIR = '(使用合并模块的默认目标)' 然后设置 TARGETDIR = [SystemFolder] 否则使用 [TARGETDIR]

或者有其他方法可以解决这个问题吗?

谢谢 比利鲍勃李

【问题讨论】:

    标签: merge module installshield


    【解决方案1】:

    在合并模块中创建组件时,将目标留给 INSTALLDIR。

    当您在基本 msi 项目(可再发行组件视图)中使用合并模块时,右键单击合并模块并选择属性。然后使用 Destination 下拉菜单配置关系。合并模块中的文件现在将转到您告诉它的位置。

    旁注,一旦合并,合并模块将不再存在。查看 Orca 中构建的 MSI,您会看到目录表条目如下所示(假设您为 SystemFolder 配置了模块)

    目录 | DIR_PARENT |默认目录

    TARGETDIR 源目录 ProgramFilesFolder TARGETDIR .:PROGRA~1|程序文件 ISMyCompanyDir ProgramFilesFolder MYCOMP~1|我的公司名称 ISMyProductDir ISMyCompanyDir MYPROD~1|我的产品名称 安装程序 IsMyProductDir 。 INSTALLDIR.SOMEGUID 系统文件夹。

    “。”表示“当前目录”或“与父目录相同”。

    所以在这种情况下,您构建了 INSTALLDIR = C:\Program Files\My Company Name\My ProductName\ 和 INSTALLDIR.SOMEGUID = C:\Windows\System32

    有意义吗?通过这种方式,您可以在部署到不同位置的不同产品中使用该模块。

    【讨论】:

    • 这对我来说很完美,我想知道为什么它没有被标记为答案。
    • 它带有领土(InstallShield 标签)。这是一个小众市场,吸引了许多新手和传统/非设置开发人员,他们往往不接受所提供的建议。我是该主题的世界领先专家之一,也是该标签的主要贡献者,我可能只接受了大约 1/3 的答案。不过,我很高兴它今天对您有所帮助!这就是我需要的所有感谢。
    • 你是对的@Christopher Painter。作为我自己的设置开发人员,我真的很感激你一直在做出贡献。你已经挽救了很多次。谢谢!
    • 这个答案的问题是,如果您想在具有单独输出目录的功能之间共享该合并模块,它将无法正常工作。合并模块 -> 输出路径之间的关系是 1:1。与组件相同的限制。
    • 我的回答没有问题。这是对合并模块如何工作的误解。合并模块只是组件的封装集合。一个组件只能表达 1 个目录的文件。对于这种情况,您需要具有不同组件的多个合并模块,或者您需要将相同的合并模块使用到多个安装程序中,然后使用引导程序将它们链接在一起
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多