【问题标题】:Execute MSI package in a custom Burn Bootstrapper Application在自定义 Burn Bootstrapper 应用程序中执行 MSI 包
【发布时间】:2012-02-04 09:36:36
【问题描述】:

我在 Burn 中将 MSI 包与 .NET 4.0 框架安装程序捆绑在一起。由于我不喜欢 Burn 应用的用户界面,因此我编写了自己的自定义引导程序应用程序。 .NET 框架已正确安装(如果尚未安装)。但我不知道如何安装 MSI 包。这是我的自定义 BA 的代码,我已经检查过它是否被执行。

public class ShopProtectBA : BootstrapperApplication
{
    protected override void Run()
    {

        //Here i would like to run the bundled MSI package.
        Engine.Quit(0);
    } 
}

这方面的文档很少。我不应该在 Run() 中安装软件包吗?这个 ting 是如何工作的?

编辑:我忘了提到它是一个自定义的托管引导程序应用程序。如果它有什么不同。

我能想到的最好的是:

            var pl = new PlanMsiFeatureEventArgs("MyMsiPackage", "Complete", FeatureState.Local);
        Engine.Detect();
        OnPlanMsiFeature(pl);

        Engine.Plan(LaunchAction.Install);

        Engine.Elevate(FindWindow(null, "Setup"));
        Engine.Apply(FindWindow(null, "Setup"));

但这只会导致一个窗口告诉我安装已准备好。然后 i 关闭,没有任何事情发生。

【问题讨论】:

    标签: c# wix burn


    【解决方案1】:

    不仅如此:您必须要求引擎检测机器状态、计划包操作并应用它们。查看 WiX BA 本身的源代码:src\Setup\WixBA。

    【讨论】:

    • 没有src\Setup\WixBA,但是有src\Setup\UX\WixUX。 Run() 方法包含以下内容:WixUX.Model = new Model(this); RootViewModel viewModel = new RootViewModel(); WixUX.View = new RootView(viewModel); // Populate the view models with data then run the view.. viewModel.Refresh(); WixUX.View.Run(); this.Engine.Quit(0); 我看不出它是如何检测机器状态、计划操作并应用它们的。我可能有点慢。你能详细说明一下吗?或者至少指向正确的方向。
    • WixBA 是最新每周发布的名称;我建议您下载它以获取最新资源。您必须按照流程进入视图模型(主要是 InstallationViewModel)。自定义 BA 并不难,但也不是微不足道的。
    • 我觉得我快到了,接近但没有雪茄。我已经用我拥有的代码更新了我的问题。真的没有什么比智能感知更能解释的了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多