基本上我試圖構建一個可以運行devcon.exe(Windows硬件管理器的命令行版本)來檢測是否安裝了特定硬件的WIX msi。如果是,則安裝msi A,否則安裝msi B(A和B已作爲獨立的msi軟件包存在,我們需要基於硬件自動選擇性安裝)。試圖從WIX msi運行嵌入式工具進行選擇性安裝
目前我已經安裝了WIX SDK,並創建了一個WIX項目,可以正確構建一個msi。我可以做簡單的事情,比如執行CustomActions來打開notepad.exe,這種簡單的事情。
第一個問題:我無法找到如何將文件打包到不會安裝到目錄中的安裝程序中。我找到了它的參考,但沒有明確說明如何去做。如果它不會被安裝到主機驅動器中,我不必將其放入'Directory'標籤內,對嗎?
第二個問題:devcon.exe沒有(從我能說的,糾正我,如果我錯了)似乎改變它的返回值取決於它發現,可能是因爲它做了很多事情,並不是'不限制硬件設備是否存在。因此,如果我可以將它嵌入並讓它運行,那麼我需要以某種方式將它輸出到標準輸出流,然後解析它以獲得我正在尋找的特定值。
當然,它會更容易一些,因爲我已經有一個批處理文件,可以解析並設置一個環境變量,告訴我我需要知道什麼,但是,如果我可以嵌入它們兩個,我如何讓批處理文件引用嵌入的devcon.exe,然後讓WIX讀取變量,或者我可以在WIX中設置一個(或一個屬性),然後從批處理文件中設置它?
也許我應該創建一個DLL自定義操作?是否有可能從dll自定義操作運行嵌入式可執行文件?然後我可以運行devcon.exe,並在那裏進行所有解析,然後設置一個Wix變量或Property來選擇接下來要做的事情。
第三個問題:能夠從另一個msi運行一個msi。我還沒有做到這一點,但我發現(http://softwareinstall.blogspot.com/2008/06/fun-with-msiembeddedchainer.html)看起來很有前途,儘管我還沒有完全讀過它然而。在時間的一個問題,我當然有足夠的已經:)