我正在尝试将覆盖设置为合并模块的目标目录,如此处所述。我将目标目录设置为[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 Version 2010 Professional Edition,Project Type是Basic MSI Project
合并模块add a GUID to every primary key以防止合并冲突。因此,当在合并模块中使用时,BIN
标识符实际上变为BIN.G_U_I_D
。
要解决此问题,合并模块是designed to be "retargetable"。
我在InstallShield论坛上发布了相同的问题,结论是InstallShield不支持在运行时更改MSM文件的目标目录。
建议的解决方法是使用自定义操作“设置目录”。
以下是步骤:
在执行此操作时,我还意识到无法根据动态用户输入更新IISROOTFOLDER。我使用自定义操作执行相同的过程来更新IISROOTFOLDER。