我在一个WiX Burn启动器中捆绑了一个MSI包。我能否在目标计算机上从捆绑包中提取这个MSI包呢?
你需要使用随附于WiX的dark.exe
工具。
dark.exe -x temp <installer>
unbinder = new Unbinder();
unbinder.Unbind(bundlePath, OutputType.Bundle, tmpFolder);
unbinder.DeleteTempFiles();
然后,使用InstallPackage
类来提取文件:
using (var msiPackage = new InstallPackage(msiFilePath, DatabaseOpenMode.Transact) { WorkingDirectory = _targetFolder })
{
using (var session = Microsoft.Deployment.WindowsInstaller.Installer.OpenPackage(msiPackage, ignoreMachineState: true))
{
msiPackage.ExtractFiles(fileKeysToInstall);
}
msiPackage.Close()
}
这只是一个非常简化的版本,你需要做的事情要更多。我写了一篇博客文章,详细介绍了这个过程,你可以在这里找到:http://www.wrightfully.com/extracting-msi-files-without-running-the-installer
重要提示:这不会运行任何自定义操作,所以请确保考虑到这一点。
提取 WiX 工具集安装 .exe 包非常容易。只需使用来自 WiX Toolset 的 dark.exe 工具即可。
例如:
C:\Program Files (x86)\WiX Toolset v3.11\bin\dark.exe c:\temp\myInstaller.exe -x c:\temp\myInstallerFiles