原創|使用教程|編輯:況魚杰|2019-12-02 16:31:08.047|閱讀 873 次
概述:MSI自定義操作的最常用類型之一是啟動可執行文件的操作。此類操作通常用于打開當前安裝所安裝的文檔,或啟動系統可執行文件以執行Windows Installer不直接支持的系統更改。本文將會詳細介紹MSI的可執行自定義操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
InstallShield是構建Windows安裝程序和MSIX包并直接在Microsoft Visual Studio中創建安裝的最快速最簡單的方法。借助InstallShield,您可以快速適應行業的變化,更快地進入市場并提供引人入勝的客戶體驗。
MSI的可執行自定義操作
自定義操作的最常用類型之一是啟動可執行文件的操作。此類操作通常用于打開當前安裝所安裝的文檔,或啟動系統可執行文件以執行Windows Installer不直接支持的系統更改。使用這種類型的自定義操作啟動的可執行文件可以由當前安裝來安裝,已經位于目標系統上,或者可以流式傳輸到MSI數據庫的Binary表中。
例如,假設您要從目標系統的Windows目錄中啟動記事本的副本。首先,打開自定義動作和序列視圖,右鍵單擊自定義動作圖標,然后選擇New EXE(新建EXE)>Path referencing a directory(引用目錄的路徑)。
在工作目錄設置中,輸入WindowsFolder,該目錄屬性表示可執行文件的位置。在文件名和命令行設置中,輸入可執行文件名稱notepad.exe。
如果正在啟動的可執行文件在目標系統上的目錄中,則必須將自定義操作放在標準CostFinalize操作之后。CostFinalize操作設置目錄屬性的值,并且嘗試引用目錄屬性(例如WindowsFolder或SystemFolder)將導致運行時錯誤2732,在Windows Installer幫助庫中將其描述為未初始化目錄管理器。
在這種情況下,由于Notepad.exe存在于目標系統上,因此可以在CostFinalize操作之后將此自定義操作放置在用戶界面序列或執行序列(或兩者)中。不必指定延遲執行,也不必先執行InstallFiles操作。
可執行的自定義操作除了作為命令行參數傳遞的那些屬性外,無權訪問安裝屬性。 命令行參數的典型用法是將文檔的路徑傳遞給正在啟動的可執行文件。例如,假設您要在發生數據傳輸后使用Notepad.exe啟動自述文件。 在這種情況下,自定義操作的文件名和命令行設置可能顯示為:notepad.exe “[INSTALLDIR]Readme.txt”
如果文件路徑包含任何空格,大多數可執行文件都需要在參數周圍加上引號。
必須在標準InstallFiles操作之后安排啟動可安裝的可執行文件的動作或打開正在安裝的文檔的動作,以便推遲執行。在即時模式下,數據傳輸尚未開始。并且在InstallFiles之前的延遲模式下,文檔和可執行文件不會被放置在目標系統上。
Not Installed(未安裝)條件確保僅在首次安裝過程中運行操作(即顯示自述文件),而不在維護模式或卸載過程中運行。
為確保該操作僅在首次完整UI安裝期間運行,您可以使用條件(未安裝)和(UILevel = 5)。進一步的可能改進是使用組件操作條件($ ComponentName = 3)將操作與包含自述文件的組件相關聯。
推薦文章:
如果您想要購買正版授權InstallShield,可以聯系咨詢相關問題。
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: