如何在实际运行安装之前提取Wix bootstrapper嵌入式msi?

时间:2016-12-26 08:39:56

标签: wix bootstrapper burn

我能够使用System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;和Ubinder来提取自己。

但是在Wix 3.10.3稳定版中,BA只会将一个纤细的ba.exe提取到临时文件夹,然后它会切换到运行没有msi的纤细ba.exe。提取自己是行不通的。虽然我已经关闭,但仍然无法让第一次启动满ba.exe

如果有任何属性,我可以从BootstrapperApplication类获取指出完整的ba.exe(它应该有一些跟踪,因为msi应该在开始安装时被提取)或者我可以调用在开始安装msi之前的提取?

1 个答案:

答案 0 :(得分:0)

使用Unbinder类,您可以将嵌入的MSI提取到工作文件夹中。请注意,这仅适用于您的捆绑包使用嵌入式MSI。

我已经包含了下面的代码,它要求您提供捆绑可执行文件的路径(与ba.exe不同)。我已经在我的博客上写了我是如何做到的,你可以在这里查看: https://www.wrightfully.com/extracting-wix-bundled-msi-files-without-running-the-installer/

    Unbinder unbinder = null;

    try
    {
        unbinder = new Unbinder();
        //unbinder.Message += MessageEventHandlerMethod;
        unbinder.Unbind(bundlePath, OutputType.Bundle, tmpFolder);
    }
    finally
    {
        if (null != unbinder)
            unbinder.DeleteTempFiles();
    }