【问题标题】:Setting Public Property in msi Custom Action在 msi 自定义操作中设置公共属性
【发布时间】:2010-07-14 19:47:04
【问题描述】:

是否可以通过 C# 自定义操作设置公共属性(例如 MYPROPERTY)?我可以使用Context.Parameters["MYPROPERTY"] 读取我传递到自定义操作数据中的属性,但是否也可以设置它们?

谢谢。

【问题讨论】:

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


    【解决方案1】:

    我不知道有什么办法。在大多数情况下,这是不可能的。 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 的安装项目不支持。据我所知,它会运行所有延迟的自定义操作。

    【讨论】:

    • Visual Studio 的安装程序非常有限。您可能需要考虑迁移到 WIX (Windows Installer XML) + DTF (Deployment Tools Foundation)。WIX 让您以比原始 MSI API 更具脚本化/可用性的方式完全控制生成的 MSI,并且 DTF 支持更加灵活和比您从 VS 设置+部署项目中获得的可用 .NET 自定义操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多