我能够使用System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
和Ubinder来提取自己。
但是在Wix 3.10.3稳定版中,BA只会将一个纤细的ba.exe
提取到临时文件夹,然后它会切换到运行没有msi的纤细ba.exe
。提取自己是行不通的。虽然我已经关闭,但仍然无法让第一次启动满ba.exe
。
如果有任何属性,我可以从BootstrapperApplication
类获取指出完整的ba.exe
(它应该有一些跟踪,因为msi应该在开始安装时被提取)或者我可以调用在开始安装msi之前的提取?
答案 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();
}