自舉
目前嘗試使用 Windows Installer 的每個安裝都是從檢查安裝程式是否存在於使用者的電腦上開始,如果不存在,則使用者和計算機是否準備好安裝 Windows Installer。 Windows Installer SDK 提供安裝應用程式 Instmsi.exe,其中包含安裝 Windows Installer 的所有邏輯和功能。 不過,引導應用程式必須管理此安裝。
啟動載入應用程式必須先檢查是否已安裝 Windows Installer。 應用程式可以使用 DllGetVersion來取得目前安裝的 Windows Installer 版本。 如果目前尚未安裝 Windows Installer,載入啟動應用程式必須查詢作業系統,以判斷需要哪個版本的 Instmsi.exe。 安裝 Windows Installer 之後,啟動載入應用程式必須處理來自 Instmsi.exe 應用程式的傳回碼,並處理在 Windows Installer 安裝期間產生的任何重新啟動。 如需詳細資訊,請參閱 確定 Windows Installer 版本
下列範例示範安裝 Microsoft Office 2000 的安裝程式應用程式如何檢查用戶的系統,並設定 Windows Installer 安裝。 此範例特別撰寫來安裝 Office 2000,而且應該只做為一般參考使用。
當使用者將 Office 2000 CD-ROM 插入計算機時,Setup.exe 會嘗試根據使用者的需求啟動維護模式、安裝應用程式或完全不執行任何動作。 下一節說明名為 Setup.exe的 Office 2000 安裝程式應用程式如何限定使用者及其計算機、建構命令行,並使用 Msiexec.exe 應用程式安裝 Windows Installer。
Setup.exe 如何在安裝 Office 2000 時啟動 Windows Installer
使用者會將 Office 2000 CD-ROM 插入計算機。 Windows作業系統會使用 /autorun 參數和 Autorun.inf 檔案來啟動 Setup.exe。 Autorun.inf 檔案位於 Office 2000 CD-ROM 的根目錄中,並包含下列各節:
[自動執行]
[Office 功能]
[產品資訊]
[ServicePack]。
[自動執行] 區段包含一個命令行,可執行 Setup.exe 應用程式、執行用來顯示光碟的圖示,以及包含將 [安裝] 選項和 [設定] 選項新增至 CD-ROM作功能表的資訊。
[Office 功能] 區段包含功能和功能名稱組的清單。
[產品資訊] 區段會指定應用程式的名稱和版本。
[ServicePack] 區段可讓網路管理員設定所需的最低 Service Pack 層級。 如果本地作業系統沒有必要的 Service Pack,網路管理員可以使用本節來撰寫顯示的警示訊息文字。
以下是 Autorun.inf 範例。
[autorun] OPEN=setup.EXE /AUTORUN /KEY:Software\Microsoft\Office\9.0\Common\General\InstallProductID ICON=setup.EXE,1 shell\configure=&Configure shell\configure\command=setup.EXE shell\install=&Install shell\install\command=setup.EXE [OfficeFeatures] Feature1=ACCESSFiles Feature2=OfficeFiles Feature3=WORDFiles Feature4=EXCELFiles Feature5=PPTFiles [ProductInformation] DisplayName=Microsoft Office 9 Version=9.0 ProductCode={product guid} [ServicePack] MessageText="The operating system does not have a required service pack. Please download and install this from www.microsoft.com." SPLevel=3
Setup.exe 應用程式會檢查_MsiPromptForCD mutex。 Windows Installer 會在提示使用者插入 CD-ROM 時建立此 Mutex。 Mutex 的存在表示 Windows Installer 正在執行已要求 Office 2000 CD-ROM 的安裝。 在此情況下,Setup.exe 應用程式會立即結束,並允許 Office 2000 安裝繼續。 如果 mutex 不存在,Setup.exe 應用程式會繼續執行步驟 3,其中會評估登錄機碼,以判斷是否已安裝 Office 2000。
Setup.exe 應用程式會檢查 Office9 登錄機碼是否存在:
HKCU/Software/Microsoft/Office/9.0/Common/General/InstallProductID
如果此登錄機碼不存在,Setup.exe 應用程式會繼續執行步驟 6,其中會檢查作系統,以判斷它是否符合 Office 2000 的安裝資格。
如果 Office 2000 登錄機碼存在,Setup.exe 應用程式會呼叫 MsiQueryProductState來檢查目前的安裝狀態。 傳回狀態為 InstallState_Default 表示已安裝 Office 2000,然後 Setup.exe 應用程式會在步驟 5 繼續進行,此步驟是檢查 Office 2000 是否從來源執行。
如果未安裝 Office 2000,Setup.exe 應用程式會繼續執行步驟 6,其中會檢查作系統,以判斷其是否符合 Office 2000 安裝資格。
Setup.exe 應用程式會針對 Autorun.inf 檔案的 [OfficeFeatures] 區段中的每個功能呼叫 MsiQueryFeatureState。 如果其中任何一項功能傳回INSTALLSTATE_SOURCE,這表示功能正從來源執行,且 Setup.exe 應用程式會立即結束。
如果沒有任何功能傳回INSTALLSTATE_SOURCE,Setup.exe 應用程式會啟動安裝程式應用程式,Msiexec.exe,並在結束之前呈現Windows Installer 維護模式。
Setup.exe 應用程式會決定作系統是否符合 Office 2000 的安裝資格。 需要 Windows XP 才能安裝 Office 2000。 如果作系統需要 Service Pack 更新才能符合 Office 2000 的資格,Setup.exe 應用程式會顯示 Autorun.inf 檔案中指定的文字。 如果作業系統不符合 Office 2000 及其升級的資格,Setup.exe 應用程式會顯示一則訊息,阻止用戶繼續操作。
如果作系統符合 Office 2000 的資格,Setup.exe 應用程式會繼續執行步驟 7,以判斷是否已在使用者的電腦上安裝 Windows Installer。
如果 Windows Installer 存在於使用者的電腦上,Setup.exe 應用程式會啟動 Msiexec.exe 應用程式,並將 Office 2000 .msi 檔案傳遞給它。
如果未在本機計算機上安裝 Windows Installer,Setup.exe 應用程式會繼續執行步驟 8,以判斷作系統是否符合安裝 Windows Installer 的資格。
如果本機電腦符合安裝 Windows Installer 的資格,Setup.exe 應用程式會針對平臺執行正確的 Instmsi.exe 安裝程式應用程式版本。 Setup.exe 可能會傳遞 「/q」 命令行參數來隱藏使用者介面,並防止用戶變更任何安裝組態選項。
Setup.exe 應用程式會載入新安裝的 Msi.dll 檔案,並呼叫 MsiInstallProduct 函式來安裝使用者的應用程式。
Setup.exe 命令行參數
Setup.exe 應用程式可讓系統管理員和使用者將命令行選項傳遞至 Msiexec.exe 應用程式。 如需詳細資訊,請參閱 命令列選項。 下表列出可與 Setup.exe搭配使用的命令選項。
選擇 | 用法 | 意義 |
---|---|---|
/autorun | setup.exe /autorun | 執行上述的 Autorun.inf。 |
/一個 | setup.exe /a | 起始系統管理安裝。 |
/j | [u|m]套件或 [u|m]套件 /t 轉換清單 或 [u|m]套件 /g 語言ID |
公告產品。 這個選項會忽略命令列上輸入的任何屬性值。 u 打廣告給當前使用者。 m 公告給計算機的所有使用者。 g 語言識別碼 t 將變換套用至展示的套件。 |
/我 | setup.exe /I Office9.msi /t ProgramMgmt.mst | 指定 .msi 檔案,該檔案由 Setup.exe 安裝。 如果未包含 /I 選項,Setup.exe 會使用 Office9.msi 檔案。 |
/o<屬性=數值> | setup.exe /o CDKEY=11111-1111 | 設定 .msi 檔案中的屬性。 Setup.exe 將這些內容傳遞至 msiexec,如所撰寫。 |
/q | setup.exe /q | 設定安裝UI層級。 /q 無 UI(/qn 用於 msiexec)/qb 基本 UI /qr 簡化介面。 |
/m# | setup.exe /m4 | 根據 Select 契約支援多種類型的授權。 授權驗證自定義動作會使用這個屬性來寫入 LV 憑證。 /m 選項後面必須接著允許的解鎖次數的數目。 /m 選項所指定的值應該設定為 Office9.msi 檔案中的 “M” 屬性。 如果未指定任何值,但 /m 選項會與安裝程式搭配使用,則應該設定 0 的值。 為了支援 Select 客戶使用 CD 或網路,必須啟用 /m 選項。 |
/設定 | setup.exe /設置 mysettings.ini | 可讓系統管理員指定要在 Office 2000 安裝程式期間傳遞之所有自定義設定的 .ini 檔案。 請參閱下方 .ini 檔案的描述。 |
使用 .ini 檔案
建立初始化檔案可能比建立長命令行更容易。 使用 /settings 選項,Setup.exe 應用程式會讀取指定的 .ini 檔案,並建構命令行以傳遞至 Msiexec.exe 應用程式。 .ini 檔案僅支援命令行上支援的屬性。 如果在 .ini 檔案和命令行中找到屬性或值,命令行設定會覆寫 .ini 檔案設定。
.ini 檔案格式為:
[msi]
[mst]
[選項]
[顯示]
.ini 檔案的 [msi] 區段會指定安裝套件的路徑。 這會對應至命令行上的 /I 選項。
.ini 檔案的 [mst] 區段會指定用於此安裝之轉換的路徑。 這會對應至命令行上的 /j 選項。 多個轉換使用 MST1、MST(N),分別於不同的行上標示。 剖析成命令行時,.ini 檔案中的清單會由左至右轉。 請注意,與 MST(N) 標題相關聯的數位只存在以維護唯一標識碼,而且沒有程式設計意義。
[選項] 區段可讓網路管理員在 .msi 或 .mst 檔案中設定和覆寫屬性。 .ini 檔案中設定的選項會使用 /o 選項新增至命令行。 選項區段中的每個選項都必須有屬性名稱和值。
[顯示] 區段可用來設定安裝期間所使用的使用者介面層級。 這會對應至命令行上的 /q 選項。 有效值為 none、basic、reduced 和 full。
範例 .ini 檔案
[MSI]
MSI=\\sourceshare\Office2000\Office2000.msi
[山地標準時間 (MST)]
MST1=\\sourceshare\Office2000\trns1.mst
MST2=\\sourceshare\Office2000\trns2.mst
[選項]
PUBLICPROPERTY=您的值
[顯示]
顯示=無