共用方式為


在安裝中包含封包檔案

本節說明在安裝中包含封包檔案。 如需詳細資訊,請參閱 使用封包和壓縮來源

在安裝套件中包含封包檔案

  1. 使用封包建立工具,將來源檔案壓縮成封包檔案。 請參閱 封包檔案
  2. 封包檔案必須位於.msi檔案內的資料流程,或位於 目錄資料表所指定來源樹狀目錄根目錄的個別封包檔案中。
  3. 判斷來源是否為壓縮類型,還是包含未壓縮和壓縮檔案的混合類型。 請參閱 壓縮和未壓縮的來源。 根據來源影像的類型,設定 Word Count 摘要 屬性的壓縮或未壓縮旗標位。
  4. 將記錄新增至封包中每個檔案的 [檔案] 資料表 。 在 [檔案] 資料行中輸入與封包中檔案檔案的檔案金鑰完全相符的檔案金鑰。 檔案金鑰會區分大小寫。 檔案資料表和封包中的檔案安裝順序也必須相同。 檔案序列是由 Sequence 資料行中的序號所指定。 若要到達封包中第一個檔案的序號,請執行下列動作。 在 Media 資料表 中尋找在 DiskID 資料行中具有最大值的現有記錄。 此記錄的 LastSequence 欄位會提供媒體上所使用的最後一個檔案序號。 在 [檔案] 資料表中,將新封包的第一個檔案指派大於此序號。 將序號指派給所有剩餘的檔案,順序與封包檔案中的順序相同。 如需其餘記錄欄位的描述,請參閱 檔案資料表
  5. 將記錄新增至封包的 Media 資料表 。 在這個新記錄的 DiskID 欄位中指定值,該值大於資料表中已經存在的最大 DiskID 值。 將封包的名稱放入 [封包] 欄位中。 此名稱的格式必須是 封包 資料類型。 如果封包是儲存在.msi檔案中的資料流程,則為名稱前面加上數位記號 「#」。 請注意,如果封包是資料流程,封包的名稱會區分大小寫。 如果封包是個別的檔案,則檔案的名稱不會區分大小寫。
  6. 檢查更新檔案資料表的 Sequence 資料行,以判斷新封包中最大的檔案序號。 在 Media 資料表新記錄的 LastSequence 欄位中,輸入大於此值的值。 如需其餘記錄欄位的描述,請參閱 媒體資料表
  7. 您可以使用 Msidb.exe 之類的工具,或使用安裝程式的 Database Functions,將封包檔案儲存在安裝套件中。 下列四個步驟說明如何使用資料庫函式從程式新增封包。
  8. 若要從程式將封包新增至安裝套件,請使用MsiDatabaseOpenView在資料庫的_Streams資料表上開啟檢視。
  9. 使用 MsiRecordSetString 將_Streams資料表的 Name 資料行設定為 [媒體] 資料表的 [封包] 資料行中顯示的名稱。 省略數位記號: #。
  10. 使用 MsiRecordSetStream ,將_Streams資料表的 Data 資料行設定為封包的資料。
  11. 使用 MsiViewModify 更新_Streams資料表中的記錄。
  12. 若要使用 Msidb.exe 將封包檔案Mycab.cab新增至名為 Mydatabase.msi 的安裝套件,請使用下列命令列:Msidb.exe -d mydatabase.msi -a mycab.cab。 在此情況下,Media 資料表的 [封包] 資料行應該包含字串: #mycab.cab。