У меня есть пакет msi, связанный с загрузочным загрузчиком wix. Могу ли я извлечь этот msi из пакета на целевой машине?
Извлечь содержимое загрузочного бутстрапа
Ответ 1
Вам нужно использовать утилиту dark.exe
, которая поставляется с WiX.
dark.exe -x temp <installer>
Ответ 2
Пакет не может самораспаковываться, пока кто-то не реализует эту функцию.
Ответ 3
Вы можете извлечь встроенный .msi из своего пакета во время его запуска, если вы используете специальное приложение для загрузки, затем извлеките содержимое этого .msi с помощью WiX SDK.
Короткий ответ: вы можете использовать класс Unbinder
для извлечения файлов MSI из вашего пакета:
unbinder = new Unbinder();
unbinder.Unbind(bundlePath, OutputType.Bundle, tmpFolder);
unbinder.DeleteTempFiles();
Затем используйте класс InstallPackge
для извлечения файлов:
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
Важное примечание. Это не выполняет никаких ваших пользовательских действий, поэтому обязательно учитывайте это.