在msi自定义操作中设置公共属性

时间:2010-07-14 19:47:05

标签: c# visual-studio installer windows-installer setup-project

是否可以从C#自定义操作设置公共属性(比如MYPROPERTY)?我可以通过Context.Parameters["MYPROPERTY"]读取我传入自定义操作数据的属性,但是有没有办法设置它们?

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道如何做到这一点。在大多数情况下,这是不可能的。 Visual Studio的设置和部署项目将其.net自定义操作设置为“延迟”运行,这意味着它们在msi安装对象被释放后运行。 Here's the list在该背景下可能的操作。

要验证您的.net自定义操作是否正在延迟运行,请使用Orca打开msi文件并转到CustomAction表。如果InstallUtil(VS的实用程序库由VS放置在MSI的“二进制”表中,并向调用.NET安装程序程序集的安装入口点的MSI公开“C”入口点)操作具有“3073”作为其“类型”,表示它们作为延迟执行运行(3073是msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeDll。)

如果在DLL中创建“C”自定义操作并将其放在MSI中,并且类型为“1”,则可以在安装过程中执行它并更改属性。不幸的是,VS的安装项目不支持这一点;据我所知,它会延迟每个自定义操作。