安装盾 - 合并模块 - 基于用户对话框输入的动态目标目录



我正在尝试设置覆盖合并模块的目标目录,如此处所述。我将目标目录设置为 [BIN]。BIN 是公共财产。在编译时,[BIN] 的值为 C:\Program Files (x86(\CompanyName\ProductName。

根据自定义对话框中的用户输入,此属性将更新为 C:\程序文件 (x86(\公司名称\用户输入名称\产品名称。

合并模块中的所有 DLL 文件都复制到编译时值 [BIN] - C:\Program Files (x86(\CompanyName\ProductName 中。出于某种原因,在这种情况下将忽略动态值。

有人可以告诉我可能出了什么问题吗?

我正在使用安装盾版本 2010 专业版,项目类型是基本 MSI 项目

合并模块将 GUID 添加到每个主键以防止合并冲突。因此,BIN标识符在合并模块中使用时实际上会变成BIN.G_U_I_D

为了解决此问题,合并模块被设计为"可重定向"。

我在 InstallShield

论坛上发布了同样的问题,结论是 InstallShield 不支持在运行时更改 MSM 文件的目标目录。

建议的解决方法是使用自定义操作"设置目录"。

以下是步骤:

  1. 在"可再发行组件"视图中,右键单击 MSM 文件 ->属性 -> 目标 ->设置为 [MSM_DEST_STATIC_DIR]。
  2. 创建类型为"设置目录"的自定义操作,目录名称为 -MSM_DEST_STATIC_DIR,目录值 - [MSD_DEST_DIR_DYNAMIC_VALUE]
  3. 从对话框中获取用户输入后,首先更新MSD_DEST_DIR_DYNAMIC_VALUE,然后执行在步骤 2 中创建的自定义操作。

在执行此操作时,我还意识到无法根据动态用户输入更新 IISROOT文件夹。我按照自定义操作的相同过程来更新 IISROOT文件夹。

最新更新