Tôi muốn tùy chỉnh trình cài đặt để hiển thị hộp thoại tùy chỉnh khi phiên bản trước đã được cài đặt: sau khi người dùng hộp thoại Chào mừng sẽ thấy hộp thoại tùy chỉnh OldVersionDlg
với thông tin đã tìm thấy phiên bản trước đó và sẽ được gỡ cài đặt tự động.Wix: hiển thị hộp thoại tùy chỉnh nếu phiên bản trước tìm thấy
Nhưng vì một số lý do thuộc tính được đặt bởi UpgradeVersion
phần tử luôn là null
khi tôi kiểm tra điều kiện trong UI/Publish Dialog
.
Dưới đây là các đoạn mã thiết yếu.
Product.wxs:
<Product Id="*" Version="$(var.Version)" UpgradeCode="$(var.ProductId)"
Language="1033" Name="$(var.ProductFullName)" Manufacturer="$(var.Manufacturer)">
<Package Description="$(var.ProductDescription)" InstallerVersion="200" Compressed="yes"
Manufacturer="$(var.Manufacturer)" />
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="$(var.ProductId)">
<UpgradeVersion Minimum="1.0.0.0" Maximum="$(var.Version)"
Property="PREVIOUSVERSIONSINSTALLED"
IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
</Product>
WixUI_Wizard.wxs:
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed</Publish>
Các nút Next không hoạt động. Tôi đã kiểm tra nhật ký PREVIOUSVERSIONSINSTALLED
được đặt sau FindRelatedProducts
. Nếu tôi sử dụng nó trong các điều kiện trong Product.wxs thì mọi thứ đều OK. Nhưng trong cấu hình giao diện người dùng, nó luôn là null
.
Cảm ơn bạn đã được trợ giúp.
Một giải pháp khác là thêm Publish/@ thuộc tính theo thứ tự, và thiết lập các hộp thoại đầu tiên để đặt hàng = "1" và lần thứ hai để đặt hàng = "2". Điều có thể xảy ra là cả hai điều kiện Sự kiện xuất bản được đánh giá là đúng và do đó trình cài đặt MSI đã chọn hành động Xuất bản đầu tiên được xác định. Bằng cách thêm thứ tự, điều này sẽ cho trình cài đặt biết hành động cần thực thi nếu cả hai sự kiện Publish đều có điều kiện thực. Một lưu ý, sự kiện Order là counter trực quan, và nó thực sự là giá trị Order cao hơn được ưu tiên khi cả hai điều kiện là true. Bạn có thể nghĩ về nó nhiều hơn như một trọng lượng, nơi trọng lượng cao hơn thắng. – pje
@kirmir Tôi có thể tìm tệp WixUI_Wizard.wxs ở đâu? CNTT nên đi kèm với cài đặt WiX? Tôi không thể tìm thấy nó. Bạn có biết cách làm công việc này với phiên bản 3.10 không? – misshomme
@micmica, tệp này được tạo theo cách thủ công và tệp này mô tả thứ tự các hộp thoại. Tôi đã sử dụng phiên bản 3.5, khi câu hỏi được hỏi. Không biết về phiên bản mới hơn, nhưng tôi tin rằng không nên có bất kỳ sự khác biệt nào. –