Tóm tắt :Về bản chất, các trạng thái dưới đây cho biết:
1)
Tắt hành động tùy chỉnh để chạy SQL Serversetup.exe
trongMSI hiện tại của bạn.2)
TạoWiX Burn Bundle
cơ bản để khởi động SQLServersetup.exe
đầu tiên, sau đó khởi động Dự án Visual StudioInstaller doMSI
tạo của bạn sau đó. Hoặc tốt hơn, makethe toàn bộ MSI trên WiX. Các công cụ thương mại như Trình cài đặt nâng cao và Installshield là các tùy chọn khả thi - chúng có hỗ trợ tính năng này được tích hợp sẵn (các tính năng thay đổi tùy theo phiên bản của điều kiện tiên quyết).
Burn Bundle-Mockup (cảm hứng, thêm cảm hứng):
Chỉ để thử cho thấy cách đánh dấu WiX Burn hoạt động:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MyCoolTestApp" Version="1.0.0.0"
Manufacturer="Someone" UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<util:FileSearch Path="[WindowsFolder]System32\ucrtbase.dll" Variable="VCDISTINSTALLED"/>
<Chain>
<ExePackage SourceFile="vc_redist.x64.exe"
DetectCondition="VCDISTINSTALLED"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole" />
<MsiPackage SourceFile="ShortcutDesktop.msi" />
</Chain>
</Bundle>
</Wix>
Nguyên nhân kỹ thuật :Tôi không phải là chuyên gia về Visual Studio Installer Projects - phải nói là luôn luôn. Tuy nhiên, những dự án này có một số hạn chế và kỳ quặc, như bạn đã phát hiện ra. Một trong những điều kỳ quặc là tất cả các hành động tùy chỉnh đều chạy ở chế độ hoãn lại và trong ngữ cảnh hệ thống (chạy dưới dạng LocalSystem) mà không có sự mạo danh của người dùng đang khởi chạy. Đây có thể là nguyên nhân của sự cố đã thấy - như bạn tự nói.
Mặc dù có thể xử lý hậu kỳ MSI mà bạn nhận được từ các Dự án VS Installer, nhưng tốt hơn là loại bỏ việc sử dụng một hành động tùy chỉnh để bắt đầu cài đặt SQL Server. Thêm chi tiết bên dưới. Quá trình xử lý bài đăng sẽ liên quan đến việc thay đổi loại hành động tùy chỉnh từ 3078 thành 1030 để kích hoạt tính năng mạo danh người dùng - điều đó cũng có nghĩa là hành động tùy chỉnh không chạy theo cách này - và do đó chỉ có thể thành công nếu toàn bộ MSI được khởi chạy ở mức cao.
Lưu ý :Dưới đây, tôi đề xuất sử dụng tính năng Ghi của WiX (Mã nguồn mở) hoặc một công cụ thương mại có khả năng tương đương. Tính năng Ghi của WiX có thể được sử dụng với các tệp MSI được tạo bởi dự án Visual Studio 2017 Installer hoặc các tệp MSI được tạo bởi bất kỳ công cụ nào khác cho vấn đề đó (cả tệp EXE). Bạn chỉ cần cắm MSI do VS2017 tạo vào WiX Bundle (hoặc tệp EXE). WiX rõ ràng cũng có thể tự tạo các tệp MSI (đó là khuôn khổ dành cho). Liên kết bắt đầu nhanh WiX .
MSI Technology Quirk :Loại bỏ các trình cài đặt khác khỏi các hành động tùy chỉnh của MSI không phải là phương pháp hay. Nếu trình cài đặt khác là một MSI khác (và không chỉ là setup.exe không phải MSI), thì bạn thậm chí không thể làm như vậy một cách đáng tin cậy do các giới hạn kỹ thuật (không có hai MSI InstallExecuteSequences
có thể chạy cùng lúc do mutex được đặt trong khi cài đặt). Nói cách khác:cài đặt MSI đồng thời bị cấm và về mặt kỹ thuật là không thể.
Đốt :Nhập tính năng Ghi của WiX - downloader
/ bootstrapper
/ sequencer
công cụ chạy các cài đặt gói theo trình tự từ trình bao bọc của chính nó setup.exe
. Nó có thể cài đặt các tệp MSI, tệp EXE và các loại gói khác - cái này đến cái khác mà không có giới hạn kỹ thuật như mutex của MSI. Nối tiếp, không chạy song song.
Cài đặt SQL Server :Bạn có thể khởi động trình cài đặt SQL Server EXE thông qua gói Ghi như vậy và bạn có thể chỉ định các tham số mà bạn liệt kê dưới dạng tham số dòng lệnh, thay vì làm như vậy trong mã được quản lý (với các yêu cầu về thời gian chạy). Sau đó, bạn khởi động MSI chính của mình sau đó từ cùng một gói.
Khóa học về sự cố đốt cháy :Có một đường cong học tập cho Burn. Nó là "fiddly" (nó là mã / đánh dấu - luôn luôn khó sử dụng), nhưng nó rất linh hoạt. Tôi muốn thêm Trình cài đặt nâng cao đó dường như có hỗ trợ tốt cho việc triển khai SQL Server, ngay cả khi chưa bao giờ có thời gian để điều tra chi tiết. Installshield có thể cài đặt các tệp EXE và tệp MSI theo trình tự bằng cách sử dụng Dự án Suite của nó tính năng (kiểm tra ảnh chụp màn hình được liên kết). Không chắc chắn về việc hỗ trợ SQL Server tổng thể.
Một số liên kết mẫu ghi :
- Khởi động chương trình
- Cách thực hiện:Cài đặt .NET Framework bằng Burn
- Một mẫu hay về những gì Burn có thể làm:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
- Đánh dấu Burn Bundle theo phong cách "Hello World" của riêng tôi (với các liên kết khác).
- Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
- Ghi cho phép bạn viết ứng dụng GUI thiết lập của riêng mình (nâng cao):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (nhiều mẫu hơn ở một cấp)
Một số liên kết :
- Wix Burn:Cách ngăn Bootstrapper tự cài đặt
- Ví dụ về Wix Burn helloworld
- Danh sách đầy đủ các cờ / tùy chọn dòng lệnh cho Burn / bootstrapper trong WiX
- Wix Burn - mẫu tùy chỉnh
-
Thêm chuyển đổi ngôn ngữ .mst's vào Burn Bundle Chain?(quá nhiều liên kết)