Có cách để thực hiện việc này trong WiX. Bạn chỉ cần sản xuất sự kiện đã thay đổi của riêng bạn.
Chúng tôi so sánh tình trạng DoAction của chúng tôi để sở hữu khác mà sẽ giữ trạng thái trước đó của Combobox - VIRTUALWEBSITEOLD
Thực hiện một hành động tùy chỉnh trong ComboBox khi già không bằng mới:
<Control Id="WebSite" Type="ComboBox" Width="180" Height="18" X="120" Y="48" ComboList="no" Property="VIRTUALWEBSITE">
<Publish Event="DoAction" Value="LansaInitVirtualFolders"><![CDATA[VIRTUALWEBSITE <> VIRTUALWEBSITEOLD]]></Publish>
</Control>
Sau đó, Hành động tùy chỉnh thực hiện so sánh giống như DoAction (có thể không bắt buộc) và sau đó lưu giá trị Combobox trong thuộc tính OLD.
Tstring wszWebsite = ReadProperty(_T("VIRTUALWEBSITE"));
Tstring wszWebsiteOld = ReadProperty(_T ("VIRTUALWEBSITEOLD"));
// If unchanged ignore request
if (wszWebsite == wszWebsiteOld) return true ;
[Do Some stuff]
// Set the saved state of the combobox so we don't get called again until it changes
if (nResult == ERROR_SUCCESS || nResult == ERROR_NO_MORE_ITEMS)
{
WriteProperty(_T("VIRTUALWEBSITEOLD"), wszWebsite.c_str());
}
(Lưu ý:. Cũng cần phải sử dụng Twin Dialog Pattern nếu cập nhật, chẳng hạn, một điều khiển ListBox Nếu kiểm soát của bạn không cập nhật nhưng Next-Back DOES cập nhật nó, sau đó Twin Dialog Pattern sẽ đảm bảo nó cập nhật)
bạn có thể vui lòng cung cấp cho tôi một ví dụ không? –
Tôi đã cập nhật câu trả lời của tôi với mẫu –
điều này tôi biết, nhưng sử dụng một số công cụ bên ngoài hoặc cái gì khác tôi không thể đạt được wat i chính xác muốn? –