2013-09-16 37 views
2

我有一個自定義的引導程序(引導程序 - Setup.exe並定製BA庫 - CustomBA.dll),它可以作爲啓動多個實例。自定義引導程序的單個實例

爲了讓用戶只能打開一個實例,我試着檢查Custom BA庫中的ProcessName。我能夠檢查ProcessName(Setup.exe),但是它爲第一個實例本身執行此操作,並退出Custom BA不關閉Setup.exe。

是否有一個內置的WiX的方法來檢查實例的引導程序本身? 如果不是,有沒有辦法在Custom BA庫中檢查它?

+0

您需要獲取進程的ID而不是名稱。可能有多個Setup.exe正在運行,但每個都有一個唯一的ID。嘗試使用GetCurrentProcessId函數。查看詳情:https://msdn.microsoft.com/en-us/library/windows/desktop/ms683180(v=vs.85).aspx –

回答

0

如果使用C++自定義引導程序,你可以嘗試創建命名的互斥體,並檢查該互斥體存在。在我的安裝程序中,我在UI線程中執行此操作。在這種情況下,安裝程序的第二個副本將靜默關閉,不會出現任何錯誤消息。

+1

你要非常小心,你的互斥量並不妨礙升級從發生。您需要考慮升級或阻止相同捆綁ID的條件。 –

相關問題