2014-11-05 15 views

Trả lời

24

Bạn cần sử dụng tiện ích dark.exe đi kèm với WiX.

dark.exe -x temp <installer> 
5

Gói không thể tự tự giải nén cho đến khi ai đó triển khai this feature.

0

Bạn có thể trích xuất một tệp .msi được nhúng trong gói của mình trong khi nó đang chạy nếu bạn đang sử dụng ứng dụng trình khởi động tùy chỉnh, sau đó trích xuất nội dung của .msi đó bằng cách sử dụng SDK WiX.

Câu trả lời ngắn là bạn có thể sử dụng lớp Unbinder để trích xuất các tập tin MSI từ bó của bạn:

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

Sau đó, sử dụng lớp InstallPackge để trích xuất các tập tin:

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

Đó là một phiên bản rất đơn giản về những gì bạn cần làm. Tôi đã viết một bài đăng trên blog có nhiều chi tiết hơn, bạn có thể tìm thấy ở đây: http://www.wrightfully.com/extracting-msi-files-without-running-the-installer

Lưu ý quan trọng: Thao tác này không chạy bất kỳ hành động tùy chỉnh nào của bạn, do đó hãy đảm bảo tính năng này.

Các vấn đề liên quan