如何在实际 运行 安装之前提取 Wix bootstrapper embedded msi?
How to extract Wix bootstrapper embedded msi before actually run install?
我能够使用 System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
和 Ubinder 来提取自身。
但是在Wix 3.10.3 stable中,BA只是解压一个slim ba.exe
到临时文件夹,然后会切换到运行没有msi的slim ba.exe
它。提取本身将不起作用。虽然我仍然无法让第一个启动完整 ba.exe
因为它已经关闭了。
如果有任何 属性 我可以从 BootstrapperApplication
class 指出完整的 ba.exe
(它应该有一些痕迹,因为应该提取 msi当它开始安装时)或者我可以在它开始安装 msi 之前调用提取吗?
使用 Unbinder
class,您可以将嵌入的 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();
}
我能够使用 System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
和 Ubinder 来提取自身。
但是在Wix 3.10.3 stable中,BA只是解压一个slim ba.exe
到临时文件夹,然后会切换到运行没有msi的slim ba.exe
它。提取本身将不起作用。虽然我仍然无法让第一个启动完整 ba.exe
因为它已经关闭了。
如果有任何 属性 我可以从 BootstrapperApplication
class 指出完整的 ba.exe
(它应该有一些痕迹,因为应该提取 msi当它开始安装时)或者我可以在它开始安装 msi 之前调用提取吗?
使用 Unbinder
class,您可以将嵌入的 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();
}