我创建了一个安装程序(使用InstallShield 2012 Spring),该安装程序使用我创建的合并模块,我希望将主安装程序和合并模块中的文件安装到注册表中存储的路径中。在单独的安装程序中,用户可以指定安装位置,我将此路径保存在注册表中,供后续安装程序使用。
在合并模块中,我的组件的名称为"INSTALLDIR\Folder"。在主安装程序中,我已将Redistributables窗格中的Destination属性从"(用户合并模块的默认目标)"更改为"INSTALLDIR"。这允许我在构建安装程序时将合并模块的文件安装到主安装程序中的同一路径,但如果我在运行时更改"目标"(通过自定义操作或"目标文件夹"对话框),则只有主安装程序的文件被安装到所需路径。
我使用系统搜索从注册表中检索路径并将其存储在属性中。然后我有一个自定义操作,将INSTALLDIR设置为从注册表中读取的路径。
如果我转到合并模块的直接编辑器并编辑目录表,我可以将INSTALLDIR.GGUID更改为INSTALLDIR,我会得到所需的结果,但这会导致"组件"one_answers"文件和文件夹"窗格不可用。
有更好的方法吗?
我看到了这些答案,它们让我开始了,但我似乎无法在运行时更改合并模块的目的地。
Installshield 12:在运行时更改合并模块的目的地
为用户配置installshield合并模块安装路径
我遇到了类似的情况。如果仅在Directory_Parent
列中从INSTALLDIR
值中删除GUID,则Files and Folders
等面板将不可用。您需要确保从Directory
列中的INSTALLDIR
单元格中也删除了GUID。然后,合并模块将"继承"父安装程序的INSTALLDIR
,并且您在合并模块中创建的目录将从中继承。