2014-11-05 24 views

risposta

24

È necessario utilizzare l'utilità dark.exe fornita con WiX.

dark.exe -x temp <installer> 
5

Il pacchetto non può auto-estraersi automaticamente finché qualcuno non implementa this feature.

0

È possibile estrarre un .msi incorporato dal pacchetto mentre è in esecuzione se si sta utilizzando un'applicazione di avvio automatico personalizzata, quindi estrarre il contenuto di tale file .msi utilizzando l'SDK WiX.

La risposta breve è che è possibile utilizzare la classe Unbinder per estrarre i file MSI dal bundle:

unbinder = new Unbinder(); 
unbinder.Unbind(bundlePath, OutputType.Bundle, tmpFolder); 
unbinder.DeleteTempFiles(); 

Quindi, utilizzare la classe InstallPackge per estrarre i file:

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() 
} 

Ecco una versione molto semplificata di ciò che devi fare. Ho scritto un post sul blog con molti più dettagli, che puoi trovare qui: http://www.wrightfully.com/extracting-msi-files-without-running-the-installer

Nota importante: questo non esegue nessuna delle tue azioni personalizzate, quindi assicurati di tenerne conto.

Problemi correlati