我试图按此处所述设置覆盖合并模块的目标目录。我将目标目录设置为[BIN]。 BIN是公共财产。在编译时,[BIN]的值为C:\ Program Files(x86)\ CompanyName \ ProductName。
基于自定义对话框中的用户输入,此属性更新为C:\ Program Files(x86)\ CompanyName \ UserInputName \ ProductName。
将合并模块中的所有DLL文件复制到[BIN]-C:\ Program Files(x86)\ CompanyName \ ProductName的编译时值中。由于某种原因,在这种情况下,动态值将被忽略。
有人可以告诉我怎么回事吗?
我正在使用Install Shield版本2010专业版,项目类型为Basic MSI Project
答案 0 :(得分:0)
合并模块add a GUID to every primary key,以防止合并冲突。因此,BIN
标识符在合并模块中使用时实际上变成了BIN.G_U_I_D
。
要解决此问题,合并模块为designed to be "retargetable"。
答案 1 :(得分:0)
我在InstallShield论坛上发布了相同的问题,结论是InstallShield不支持在运行时更改MSM文件的目标目录。
建议的解决方法是使用自定义操作“设置目录”。
以下是步骤:
这样做的同时,我也意识到不可能基于动态用户输入来更新IISROOTFOLDER。我按照相同的步骤进行了自定义操作,以更新IISROOTFOLDER。