Installshield 12:在运行时更改合并模块的目标

1 merge installshield module

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

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

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

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

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

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

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

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

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

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

还是我可以解决此问题的另一种方法?

谢谢BillyBobLee

Chr*_*ter 5

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

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

旁注,一旦合并,合并模块就不再存在。看一下Orca中内置的MSI,您会看到目录表条目看起来像这样(假设您为SystemFolder配置了模块)

目录| DIR_PARENT | 默认目录

TARGETDIR SourceDir ProgramFilesFolder TARGETDIR。:PROGRA〜1 |程序文件ISMyCompanyDir ProgramFilesFolder MYCOMP〜1 |我的公司名称ISMyProductDir ISMyCompanyDir MYPROD〜1 |我的产品名称INSTALLDIR IsMyProductDir。INSTALLDIR.SOMEGUID SystemFolder。

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

因此,在这种情况下,您需要建立INSTALLDIR = C:\ Program Files \ My Company Name \ My ProductName \以及INSTALLDIR.SOMEGUID = C:\ Windows \ System32

说得通?这样,您可以在部署到不同位置的不同产品中使用该模块。