2010-04-27 93 views
2

我寫了基於教程Windows安裝程序自定義操作Windows安裝程序自定義操作在這裏找到: http://www.codeproject.com/kb/install/msicustomaction.aspx之前的任何驗證

我的自定義操作是殺害其仍然可以被用戶打開一個給定名稱的後臺進程。原因是我不希望用戶看到給定EXE正在運行的警告,並且必須關閉,以便可以繼續安裝。這在MSI通過UI序列時正常工作,因爲該操作是在本教程中的「InstallUISequence」表中創建的。
但是,當靜默使用MSI(右鍵單擊並選擇修復或卸載)時,我的自定義操作當然不會執行。

我必須將自定義操作放在哪裏以便在靜默運行時立即執行?

我試着將它添加到「InstallExecuteSequence」,但仍顯示'app running'警告。然後我嘗試將自定義動作的序列號降低到5,但這也沒有幫助。

注意:
我正在使用Orca修改從Visual Studio安裝項目生成的MSI。然後我使用轉換文件來應用它。

回答

6

您需要安排動作兩次,一次在UI序列中,一次在Execute序列中,然後調度,因此它只會在嘗試執行它的第一個序列中運行。 (例如,在維克斯CustomAction/@execute='firstSequence'

更新:如果您使用的Orca,然後看到Custom Action Execution Scheduling Options的文檔,你只需要確保msidbCustomActionTypeFirstSequence位。

+0

抱歉,我不知道WIX。我使用Orca來生成一個轉換文件,然後使用Visual Studio安裝項目中的後期構建操作將其應用於生成的MSI。我在UI序列和Execute序列中添加了該操作。但是我不知道如何使用Orca定義'firstSequence'。 – Marc 2010-04-28 06:33:24

+1

@sascha:非常感謝!使用你鏈接到的MSDN文檔,我發現我只需要將256添加到我的CustomAction.Type值中。進入257(1 + 256)後,它現在工作得很好! – Marc 2010-04-29 06:37:00

-1

您將自定義操作正確放置在「InstallExecuteSequence」中。誰顯示「'應用程序正在運行'警告」?您是否確認您的自定義操作實際執行? Orca是否將你的自定義動作按順序顯示爲第一個動作?什麼說安裝日誌?

+0

我猜這將是UI安裝過程中執行的Windows Installer引發的標準「正在使用的文件」對話框(在Execute序列處理之前) – saschabeaumont 2010-04-29 00:00:10