2011-04-23 34 views
6

Tôi đã làm theo hướng dẫn here để triển khai lối tắt gỡ cài đặt trong trình đơn bắt đầu.Gỡ cài đặt phím tắt trong WiX khi Id sản phẩm * để cho phép nâng cấp lớn?

Nói tóm lại, cách để tạo ra các mục gỡ bỏ cài đặt như sau:

<Shortcut Id="UninstallProduct"    
      Name="Uninstall My Application" 
      Target="[SystemFolder]msiexec.exe" 
      Arguments="/x [ProductCode]" 
      Description="Uninstalls My Application" /> 

Dựa trên Rob Mensching của đề nghị here, nếu ứng dụng là đủ nhỏ và bạn không cần phải xử lý cập nhật nhỏ và nhỏ nâng cấp (mà tôi không), bạn có thể buộc mọi cập nhật là bản nâng cấp chính. Điều này được hiển thị here. Tôi đã từng đề nghị của Rob mà là thế này:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)"> 
<Upgrade Id="PUT-GUID-HERE"> 
    <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> 
    <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" /> 
</Upgrade> 

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize" /> 
</InstallExecuteSequence> 

Bây giờ câu hỏi của tôi là nếu Id Sản phẩm được chọn ngẫu nhiên (*) để cho phép một nâng cấp lớn xảy ra, là có cách nào khác để thêm một shortcut uninstall vào menu start hoặc chúng ta phải làm điều đó thông qua các chương trình Add/Remove? Tôi muốn tạo phím tắt trong menu bắt đầu vì nó dễ dàng hơn cho người dùng. Rõ ràng cách nó bây giờ, nó sẽ không hoạt động bởi vì [ProductCode] được sử dụng trong các đối số msiexec sẽ thay đổi trên mỗi lần cài đặt. Cảm ơn.

Trả lời

4

Bạn đang nói bạn đã thử nó và nó không hoạt động? Làm thế nào nó thất bại? Đối số phím tắt là gì? Sử dụng Product/@ Id = "*" đặt thuộc tính ProductCode, vì vậy nó sẽ hoạt động chính xác.

+0

Có lẽ tôi đang làm điều gì đó tầm thường sai, nhưng nó không thành công khi bạn nhấp vào Gỡ cài đặt, msiexec có vẻ đang gỡ cài đặt ứng dụng, nhưng nó không làm bất cứ điều gì, ứng dụng vẫn ở đó, tất cả các phím tắt vẫn ở đó . Tôi có Được định nghĩa và đang sử dụng chúng như được chỉ định trong bài viết gốc của tôi. Cả Mã sản phẩm UpgradeCode và Id nâng cấp đều có cùng GUID nhưng tôi tin rằng vấn đề nằm trong thực tế là Id sản phẩm = * và msiexec đang sử dụng Arguments = "/ x [ProductCode]. Các giá trị này có khác nhau không? – Jack

+0

Bạn đang nói [ProductCode] = Mã sản phẩm (*) tại thời điểm biên dịch? – Jack

+0

Chỉ muốn thêm, tôi nhận được kết quả tương tự (gỡ cài đặt từ menu bắt đầu không hoạt động) khi tôi sử dụng: Thay vì thẻ Nâng cấp và InstallExecuteSequence. – Jack

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