【发布时间】:2010-07-14 19:47:04
【问题描述】:
是否可以通过 C# 自定义操作设置公共属性(例如 MYPROPERTY)?我可以使用Context.Parameters["MYPROPERTY"] 读取我传递到自定义操作数据中的属性,但是否也可以设置它们?
谢谢。
【问题讨论】:
标签: c# visual-studio installation windows-installer setup-project
是否可以通过 C# 自定义操作设置公共属性(例如 MYPROPERTY)?我可以使用Context.Parameters["MYPROPERTY"] 读取我传递到自定义操作数据中的属性,但是否也可以设置它们?
谢谢。
【问题讨论】:
标签: c# visual-studio installation windows-installer setup-project
我不知道有什么办法。在大多数情况下,这是不可能的。 Visual Studio 的安装和部署项目将其 .net 自定义操作设置为“延迟”运行,这意味着它们在 msi 安装对象被释放后运行。 Here's the list 在该上下文中可能的操作。
要验证您的 .net 自定义操作是否正在延迟运行,请使用 Orca 打开 msi 文件并转到 CustomAction 表。如果 InstallUtil(VS 的实用程序库,由 VS 放置在 MSI 的“二进制”表中,并向 MSI 公开一个“C”入口点,调用 .NET 安装程序程序集的安装入口点)操作将“3073”作为其“类型”,表示它们作为延迟执行运行(3073 是 msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeDll。)
如果您在 DLL 中创建一个“C”自定义操作并将其放入类型为“1”的 MSI 中,您可以在安装序列期间执行它并更改属性。不幸的是,VS 的安装项目不支持。据我所知,它会运行所有延迟的自定义操作。
【讨论】: