2012-03-22 16 views
8

Tôi đang trong tình trạng đau khổ. Tôi đã cài đặt và bắt đầu một ứng dụng biểu tượng khay (common .exe)WiX đóng ứng dụng trước khi gỡ cài đặt - đóng ứng dụng đang mở tin nhắn

Thao tác này hoạt động đúng cách, nhưng bây giờ tôi muốn dừng ứng dụng đó trước giao diện người dùng này yêu cầu người dùng đóng ứng dụng theo cách thủ công thường xuyên gỡ cài đặt, biểu tượng khay của tôi bị xóa nhưng quá trình vẫn đang chạy.

tôi áp dụng hành động tùy chỉnh này để đóng ứng dụng trước khi gỡ bỏ cài đặt (hoặc thậm chí trong suốt)

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" /> 

<InstallExecuteSequence> 
    <Custom Action="CloseTrayApp" Before="InstallValidate" /> 
</InstallExecuteSequence> 

Nhưng "đóng tất cả các ứng dụng đang chạy" hộp thoại vẫn bật lên, nhưng tôi nghĩ rằng điều này sẽ giải quyết vấn đề của tôi.

Tôi đã cố gắng sử dụng CloseAction nhưng tôi đã nhanh chóng sử dụng nó vì lỗi trong khi biên soạn nội dung. Nó nói rằng không gian tên WixUtils có thể bị thiếu nhưng tôi đôi kiểm tra rằng nó là ở đó:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

Làm thế nào tôi có thể tránh được các cửa sổ hộp thoại poping lên và kích hoạt hành động tùy chỉnh này được thực hiện?

Trả lời

7

Bạn cũng phải thêm tham chiếu đến WixUtilExtension.dll. Nếu bạn đang sử dụng Visual Studio/Votive bạn chỉ cần nhấp chuột phải thêm tham chiếu và chọn DLL từ [ProgramFilesFolder] Windows Installer XML v3.5 \ bin. Nếu không, bạn cần phải thực hiện phần mở rộng dành cho trình biên dịch và mối liên kết:

candle.exe yourfile.wxs -ext %full path to WixUtilExtension.dll%' 
light.exe yourfile.wixobj -ext %full path to WixUtilExtension.dll% –out yourfile.msi yourfile.wixout' 

Thông tin thêm có thể được tìm thấy tại địa chỉ:

Using Standard Custom Actions

Xin lưu ý rằng các hành động tùy chỉnh CloseApp có một giới hạn mà nó đã giành 't' chấm dứt "ứng dụng của bạn. Nó sẽ chỉ gửi ứng dụng của bạn một tin nhắn WM_CLOSE một cách lịch sự và nó tùy thuộc vào khay ứng dụng của bạn để nhận và xử lý tin nhắn đó bằng một tắt máy.

+0

Không có cách nào khác bằng cách sử dụng một hành động tùy chỉnh và vượt qua một đối số như "-exit" vì chương trình của tôi phản ứng trên đó và tự chấm dứt. Tôi nghĩ rằng có thể có điều gì đó sai trái với tuyên bố trước Before = "InstallValidate". Tôi có thể treo lên các thói quen deinstall trong một tình huống trước đó? – inva

+0

Tôi xin lỗi, tôi đã đọc mô tả của bạn chứ không phải mã của bạn. Hãy xem: http://wix.sourceforge.net/manual-wix3/util_xsd_closeapplication.htm –

+0

damn nó vẫn không hoạt động đúng ... biểu tượng khay trở nên vô hình nhưng quá trình ứng dụng khay vẫn chạy ... :(Tôi đang sử dụng sau đây tuyên bố closeapp: inva