如何从注册表项设置合并模块的安装路径?

时间:2014-10-10 13:13:13

标签: installshield merge-module

我创建了一个安装程序(使用InstallShield 2012 Spring),它使用了我创建的合并模块,我想将主安装程序和合并模块中的文件安装到存储在注册表中的路径。在单独的安装程序中,用户可以指定安装位置,并将此路径保存在注册表中以供后续安装程序使用。

在合并模块中,我的组件设有'INSTALLDIR \ Folder'。在主安装程序中,我已将Redistributables窗格中的Destination属性从'(用户合并模块的默认目标)'更改为'INSTALLDIR'。这允许我在构建安装程序时将合并模块的文件安装到主安装程序中的相同路径,但如果我在运行时更改目标(通过自定义操作或DestinationFolder对话框),则只安装主安装程序的文件到了理想的道路。

我正在使用系统搜索从注册表中检索路径并将其存储在属性中。然后我有一个自定义操作,将INSTALLDIR设置为从注册表中读取的路径。

如果我转到合并模块的直接编辑器并编辑目录表,我可以将INSTALLDIR.GUID更改为INSTALLDIR并获得我想要的结果但是这会导致“组件”和“文件和文件夹”窗格无法使用。

有更好的方法吗?

我看到了这些答案,他们让我开始了,但我似乎无法在运行时间内更改合并模块的目的地。

Installshield 12: Changing the destination of a merge module at run time

Make installshield merge module installation path configurable for user

1 个答案:

答案 0 :(得分:0)

我遇到了类似的情况。如果仅从INSTALLDIR列中的Directory_Parent值中删除GUID,则Files and Folders等面板将变为不可用。您还需要确保从INSTALLDIR列中的Directory单元格中删除GUID。然后合并模块将继承'父安装程序的INSTALLDIR以及您在合并模块中创建的目录将继承该目录。