【发布时间】:2011-11-02 02:48:05
【问题描述】:
我在尝试构建 MSM 时遇到了这个问题。显然,模块属性(以及与此相关的所有标识符)在模块生成期间通过在其名称末尾添加模块 GUID 来重命名。例如,属性“MY_PROPERTY”重命名为“MY_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72”(假设 803A3089-928F-46F1-BBAE-CBD39A7D6A72 是模块 GUID)。我相信这是用于防止多个模块在尝试使用同名标识符时发生冲突的机制。
我需要从 MSM 中调用一个 DLL 自定义操作,该操作需要为特定属性设置一些值(我们称之为“THE_PROPERTY”)。问题是 THE_PROPERTY 如上所述被重命名为 THE_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72,因此自定义操作永远找不到该属性并失败。
有什么办法可以解决这个问题吗?我正在考虑修改自定义操作,以便它尝试(以某种方式)找出调用它的模块的 GUID。一种方法是查看当前操作名称,该名称还应包括 GUID。但是我可以从自定义操作中获取当前操作名称吗?你能想出另一种解决方案吗?
谢谢!
【问题讨论】:
标签: dll module windows-installer custom-action merge-module