啟動載入器 (Bootstrapper) 是泛型安裝程式,您可以設定它,虛擬啟動載入任何封裝成 Windows Installer 檔案或封裝成可執行程式的可轉散發套件。透過一組簡單的 XML 資訊清單,進行程式設計,這個資訊清單指定所有必要的中繼資料 (Metadata),讓啟動載入器管理元件的安裝。啟動載入器不指示應用程式必須使用的安裝程式技術 (Windows Installer 或 ClickOnce)。
當使用者啟動 Setup.exe 時,它會先偵測所有必要條件是否已經安裝。如果遺漏任何必要條件,啟動載入器會顯示安裝對話方塊,列出這些元件,並顯示其授權合約。如果偵測到所有必要條件,啟動載入器就會啟動應用程式安裝程式。
一旦使用者接受合約,下載和安裝處理序隨即開始。已安裝所有必要條件時,啟動載入器就會啟動應用程式本身的安裝處理序。
建立自訂套件
在部分情況下,您不需要建立可轉散發套件。通常,為必須將檔案安裝至 GAC、執行全域註冊,或組成 Windows 服務的共用元件或系統元件,才需要建立套件。
您應該詢問控制項提供者,可轉散發檔案是否可以隨附於應用程式。如果簡單的複製作業即可轉散發必要條件元件 (例如,如果它沒有相依性),您就不需要建立套件。要確定檔案包含在安裝程式或設為 [複製到本機] (在 [屬性檢視] 中,檔案的 Copy 屬性應該設為 True)。
您也應該判斷是否必須要使用安裝程式。如果需要,請使用啟動載入器套件。
若要建立新元件套件,您必須提供:
可轉散發元件,格式為 EXE 或 MSI 檔案。
產品資訊清單 (product.xml),包含套件的語言中性中繼資料。這包含可轉散發元件所有當地語系化版本通用的中繼資料。
套件資訊清單 (package.xml),包含語言特定的中繼資料;通常包含當地語系化的錯誤訊息。每個元件的當地語系化版本至少必須各有一個套件資訊清單。
您必須手動建立資訊清單檔案,並且資訊清單必須符合特定結構描述 (如 .NET Framework SDK 中的套件結構描述項目所描述)。如需結構描述的參考資訊,請參閱產品和封裝結構描述參考。在 Visual Studio 中整合的安裝產生器,於建置時間會驗證資訊清單檔案。
您可以使用 DependsOnProduct 結構描述項目,指定資訊清單中套件之間的相依性。相依性的範例包括,Visual J# Runtime 要求必須先安裝 .NET Framework。
然後,您必須將產品和套件資訊清單檔案 (以及可轉散發檔案) 複製到 Visual Studio 保留給可轉散發套件的特殊資料夾:
若要撰寫安裝程式,將可轉散發元件及其資訊清單複製到這個資料夾,您可以從下列登錄機碼 (依下列順序讀取),以程式設計方式探查 Bootstrapper 資料夾的位置:
HKCU\Software\Microsoft\GenericBootstrapper\1.0\Path HKLM\Software\Microsoft\GenericBootstrapper\1.0\Path
如果這些機碼不存在,請讀取 SDK 安裝位置的登錄機碼 (Registry Key):
每個可轉散發元件隨即出現在套件目錄底下,它自己的子目錄中。然後,產品資訊清單和可轉散發檔案會放在這個子目錄。元件的當地語系化版本和套件資訊清單會放在其他子目錄 (這些子目錄依照 [文化特性名稱] 命名,請參閱 CultureInfo 中的表格)。
這些檔案複製到 Bootstrapper 資料夾之後,它們會自動出現在 Visual Studio 必要條件對話方塊中,開發人員即可核取方塊選取它們。
如需使用啟動載入器設定安裝的詳細資訊,請參閱 MSDN 文件<Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation>,網址為 http://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/。
將啟動載入器可轉散發套件與應用程式安裝分開放置
一般規則是,您應該將啟動載入器可轉散發套件的任何元件與使用這些元件的應用程式分開放置。例如,假設名稱為 Acme.DataWidgets.msi 的啟動載入器套件包含元件 Acme.DataWidgets.dll。在開發時間,Acme.DataWidgets.dll 不應該出現在專案的 bindir 目錄,也不應該部署在應用程式的安裝程式套件中。
因此,建議您最好使用相同的核心啟動載入器可轉散發套件安裝程式,將啟動載入器元件安裝在開發機器上的 GAC。這樣會防止在開發時間將啟動載入器元件複製到專案的 bindir 目錄。此外,建議您定義 RedistList 檔案,描述啟動載入器可轉散發套件的所有組件。這樣會防止將啟動載入器元件包含在應用程式部署專案中。只需要在開發機器上安裝 RedistList 檔案。
若要這麼做,請在 .NET Framework 目錄 (\WINDOWS\Microsoft.NET\Framework) 底下的 RedistList 資料夾,建立可轉散發清單。
可轉散發清單是 XML 檔案,應該以下列格式命名:company_name + component_name + RedistList.xml。例如,如果元件名稱為 "Datawidgets",廠商名稱為 "Acme",請使用 Acme.DataWidgets.RedistList.xml。可轉散發清單的內容範例如下:
將套件加入至必要條件對話方塊
必要條件對話方塊可讓您在安裝前選取應用程式需要的元件。Visual Studio 包含多個標準必要條件。不過,您也可以將其他 Microsoft 或協力廠商元件當做必要條件加入。若要這麼做,您必須如上述撰寫產品和套件資訊清單。
在 [必要條件] 對話方塊中,[選擇要安裝的必要條件] 清單會顯示可安裝的必要條件套件。清單上套件順序是根據資訊清單中指定的相依性,並且這個順序指定安裝套件的順序。
將泛型套件加入至啟動載入器之後,它就會出現在 [必要條件] 對話方塊中,當做 [MyPackage]。Visual Studio 不會自動選擇要安裝的套件。
對於 ClickOnce 專案,Visual Studio 建議所有專案類型都包含 .NET Framework,所以在 [選擇要安裝的必要條件] 中,預設選取 [.NET Framework] 核取方塊。它也建議 J# 專案使用 J# Runtime。
對於 Windows Installer 專案,如果目前專案是安裝或 Web 安裝專案,預設會選取 [.NET Framework] 核取方塊。如果在建置時間沒有選取 .NET Framework 或 Windows Installer 套件,會發出建置警告。