2014-11-05 3 views

ответ

24

Вам необходимо использовать служебную программу dark.exe, которая поставляется вместе с WiX.

dark.exe -x temp <installer> 
5

Расслоение не может самостоятельно добывать себе, пока кто-нибудь не реализует this feature.

0

Вы можете извлечь встроенный .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

Важное примечание. Это не выполняет никаких ваших пользовательских действий, поэтому обязательно учитывайте это.

Смежные вопросы