逐步解說:使用自訂動作在安裝時預先編譯組件
更新:2007 年 11 月
[自訂動作編輯器] 讓您在安裝結束時,能夠指定在目標電腦上要執行的其他動作。例如,在這個逐步解說中,將 DLL 的路徑名稱傳遞至 CustomActionData 屬性,以在安裝期間將組件預先編譯為機器碼。
注意事項: |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
注意事項: |
---|
下列說明將示範如何使用 Visual Basic 專案建立部署專案;一般原則會套用至支援部署 Windows 應用程式的所有 Visual Studio 語言專案。 |
若要建立自訂動作類別
在 [檔案] 功能表上,按一下 [新增專案]。
在 [新增專案] 對話方塊,選取 [專案類型] 窗格中的 [Visual Basic 專案],然後選擇 [範本] 窗格中的 [類別庫]。在 [名稱] 方塊中輸入 InstallClass。
在 [專案] 功能表中選擇 [加入新項目]。
在 [加入新項目] 對話方塊中選擇 [安裝程式類別]。在 [名稱] 方塊中輸入 InstallClass.vb。按一下 [加入] 以將類別加入至專案。
若要新增程式碼至自訂動作
以滑鼠右鍵按一下 [方案總管] (或設計介面) 的 InstallClass.vb,然後按一下 [檢視程式碼] 以開啟 [程式碼編輯器]。將下列程式碼加入模組最上方中,在 Imports System.Configuration.Install 下:
Imports System.Runtime.InteropServices Imports System.Text
在 InstallClass.vb 中,將下列宣告加入至 Public Class InstallClass 下方:
Private Declare Function GetCORSystemDirectory Lib "mscoree.dll" _ (<Runtime.InteropServices.MarshalAs( _ System.Runtime.InteropServices.UnmanagedType.LPWStr)> _ ByVal Buffer As System.Text.StringBuilder, _ ByVal BufferLength As Integer, ByRef Length As Integer) As Integer
在 InstallClass.vb 中,於 MyBase.New 的 End Sub 陳述式後面,加入下列程序以覆寫基底類別的 Install 程序:
<Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> _ Public Overrides Sub Install(ByVal savedState As _ System.Collections.IDictionary) MyBase.Install(savedState) Dim Args As String = Me.Context.Parameters.Item("Args") If Args = "" Then Throw New InstallException("No arguments specified") End If ' Gets the path to the Framework directory. Dim Path As New System.Text.StringBuilder(1024) Dim Size As Integer GetCORSystemDirectory(Path, Path.Capacity, Size) Dim P As Process ' Quotes the arguments, in case they have a space in them. Dim Si As New ProcessStartInfo(Path.ToString() & "ngen.exe", Chr(34) _ & Args & Chr(34)) Si.WindowStyle = ProcessWindowStyle.Hidden Try P = Process.Start(Si) P.WaitForExit() Catch e As Exception Throw New InstallException(e.Message) End Try End Sub
若要加入部署專案
在 [檔案] 功能表上選擇 [加入],然後按一下 [新增專案]。
在 [加入新的專案] 對話方塊的 [專案類型] 窗格中選取 [安裝和部署專案],再從 [範本] 窗格中選擇 [安裝專案]。在 [名稱] 方塊中輸入 InstallClass Installer。
在 [屬性] 視窗內選取 [ProductName] 屬性,然後輸入 InstallClass。
在 [檔案系統編輯器] 中選取 [應用程式資料夾]。在 [動作] 功能表上選擇 [加入],然後按一下 [專案輸出]。
在 [加入專案輸出群組] 對話方塊中選取 InstallClass 專案的主要輸出,再按一下 [確定] 關閉對話方塊。
若要加入自訂動作
在 [方案總管] 中選取 [InstallClass Installer] 專案。在 [檢視] 功能表中指向 [編輯器],然後按一下 [自訂動作]。
在 [自訂動作編輯器] 中選取 [自訂動作] 節點。在 [動作] 功能表上選擇 [加入自訂動作]。
在 [選取專案中項目] 對話方塊中按兩下 [應用程式資料夾],再選取 [來自 InstallClass 的主要輸出 (作用中)]。按一下 [確定] 將 InstallClass 自訂動作加入至全部的四個自訂動作節點中。
選擇 [安裝] 節點下的 [來自 InstallClass 的主要輸出 (作用中)] 節點。
在 [屬性] 視窗中選取 [CustomActionData] 屬性,並輸入 /Args="[TARGETDIR]InstallClass.dll"。括上引號。
對其他三個 [來自 InstallClass 的主要輸出 (作用中)] 的執行個體重複這些步驟。
在 [建置] 功能表上選擇 [建置 InstallClass Installer]。
若要在您的開發電腦上安裝
在 [方案總管] 中選取 [InstallClass Installer] 專案。在 [專案] 功能表中選擇 [安裝]。
注意事項: 您必須具有這部電腦的安裝使用權限才能執行安裝程式。
若要部署至其他電腦
在 [Windows 檔案總管] 裡,巡覽至您的專案目錄,然後找出所建置的安裝程式。預設路徑是 \Documents and Settings\yourloginname\My Documents\Visual Studio 2005\Projects\Solution Folder Name\My Notepad Installer\project configuration\My Notepad Installer.msi。預設 project configuration 是 [Debug] 或 [Release]。
將目錄中的 InstallClass Installer.msi、Setup.exe 和所有其他檔案及子目錄複製到另一部電腦中。
注意事項: 若要在網路之外的電腦上安裝,請將檔案複製到 CD-ROM 之類的傳統媒體。
在目標電腦上按兩下 Setup.exe,執行安裝程式。
注意事項: 您必須具有這部電腦的安裝使用權限才能執行安裝程式。
若要測試安裝
- 巡覽至組件資料夾 %windir%\assembly (例如,C:\Windows\assembly),然後尋找 InstallClass。在 [類型] 資料行中,其類型應標示為 [原生映像]。
若要解除安裝應用程式
在 Windows [控制台] 中按兩下 [新增或移除程式]。
在 [新增或移除程式] 對話方塊中選取 [InstallClass Installer],按一下 [移除],再按 [確定] 關閉對話方塊。
秘訣 若要從開發電腦進行解除安裝,請在 [專案] 功能表中選擇 [解除安裝]。