在自定义Burn Bootstrapper应用程序中执行MSI包

时间:2012-02-04 09:36:36

标签: c# wix burn

我正在使用Burn中的.NET 4.0框架安装程序捆绑MSI包。由于我不喜欢用户界面Burn适用,我已经编写了自己的自定义Bootstrapper应用程序。如果尚未安装.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()中安装包吗?这个怎么样?

编辑:我忘了提到这是一个自定义的Managed Bootstrapper应用程序。如果它有任何区别。

我能想到的最好的是:

            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"));

但它只会在一个窗口中告诉我安装已准备就绪。然后我关闭,没有更多的事情发生。

1 个答案:

答案 0 :(得分:0)

还有更多内容:您必须要求引擎检测机器状态,计划包操作并应用它们。看一下WiX BA本身的源代码:src \ Setup \ WixBA。