共用方式為


檔案數據表

檔案數據表包含原始程序檔的完整清單,其中包含其各種屬性,依唯一、非本地化、標識元排序。 檔案可以儲存在來源媒體上做為個別檔案,或在 封包檔案中壓縮。 如需詳細資訊,請參閱使用封包和壓縮來源

檔案數據表具有下列數據行。

類型 鑰匙
識別碼 Y N
元件_ 識別碼 N N
檔名 Filename N N
FileSize DoubleInteger N N
版本 版本 N Y
語言 語言 N Y
屬性 整數 N Y
序列 整數 N N

 

檔案

可唯一識別檔案的非本地化令牌。 此欄位不區分大小寫。 請勿將標識碼指派給只有大小寫不同的檔案。

Component_

元件資料表的第一個資料列的外部索引鍵。 此欄位會識別控制檔案的元件。

FileName

用於安裝的檔名。 名稱可能已當地語系化。

由於某些網頁伺服器可能會區分大小寫,因此 FileName 應該完全符合來源檔案的案例,以確保支援因特網下載。

FileSize

以位元組為單位的檔案大小。 這必須是非負數。

版本

此欄位是已建立版本檔案的版本字串。 非版本化檔案的此欄位是空白的。 在此欄位中輸入的檔案版本必須與安裝套件隨附的檔案版本相同。

[版本] 欄位也可以設定為包含 [檔案] 資料表中另一筆記錄的主鍵。 參考的檔案接著會決定此檔案的版本設定邏輯。 如需詳細資訊,請參閱 隨附檔案。 請注意,如果這個檔案是其元件的索引鍵路徑,則不得指定為隨附檔案。

語言

以逗號分隔的十進位語言標識碼清單。

字型檔案不應以語言標識碼撰寫,因為字型沒有內嵌的語言標識符資源。 因此,此數據行應該為字型檔案保留 Null。

屬性

整數,包含代表檔案屬性的位旗標。

下表顯示位欄位的定義。

不斷 十六進位 十進位 描述
msidbFileAttributesReadOnly 0x000001 1 Read-Only
msidbFileAttributesHidden 0x000002 2 隱藏
msidbFileAttributesSystem 0x000004 4 系統
msidbFileAttributesVital 0x000200 512 檔案對於它所屬元件的精確作業至關重要。 如果安裝具有 msidbFileAttributesVital 屬性的檔案失敗,則安裝會停止並回復。 在此情況下,安裝程式會顯示沒有 [忽略] 按鈕的對話方塊。 如果未設定這個屬性,而且檔案的安裝失敗,安裝程式會顯示一個對話方塊,其中包含 [忽略] 按鈕。 在此情況下,用戶可以選擇忽略安裝檔案失敗並繼續。
msidbFileAttributesChecksum 0x000400 1024 檔案包含有效的總和檢查碼。 修復已損毀的檔案需要總和檢查碼。
msidbFileAttributesPatchAdded 0x001000 4096 這個位只能由修補程式新增,如果修補程式正在新增檔案,則此位必須加入。
msidbFileAttributesNoncompressed 0x002000 8192 檔案的來源類型未壓縮。 如果已設定,請忽略 字數摘要 屬性。 如果未設定 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed,檔案的壓縮狀態是由 Word Count Summary 属性所指定。 請勿同時設定 msidbFileAttributesNoncompressed msidbFileAttributesCompressed
msidbFileAttributesCompressed 0x004000 16384 檔案的來源類型已壓縮。 如果已設定,請忽略 字數摘要 屬性。 如果未設定 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed,檔案的壓縮狀態是由 Word Count Summary 属性所指定。 請勿同時設定 msidbFileAttributesNoncompressed msidbFileAttributesCompressed

 

如果已設定 attributes 數據行內的 msidbFileAttributesVital 位,而且如果選取檔案所屬的元件進行安裝,則安裝程式必須能夠安裝此檔案,才能順利完成安裝。 如果安裝程式因某種原因而無法安裝檔案(例如,如果來源檔案無法位於來源映射內),則會出現錯誤對話方塊,並顯示 [重試] 或 [取消] 選項。 對於沒有 msidbFileAttributesVital 設定的檔案,安裝錯誤的選項會是 「中止」、「重試」和「忽略」(也就是說,用戶可以選擇在不安裝該檔案的情況下順利完成安裝)。

在 [屬性] 數據行內的 msidbFileAttributesChecksum 位,應該針對安裝中的每個可執行檔設定,該可執行檔具有有效的 總和檢查碼 儲存在可攜式可執行檔 (PE) 檔案標頭中。 在重新安裝期間,只會驗證已設定此位的檔案是否有有效的總和檢查碼。 如需詳細資訊,請參閱 REINSTALLMODE

序列

此檔案在媒體影像上的順序位置。 如果壓縮盤案,此順序必須對應至封包中檔案的順序。 此欄位中的整數必須等於或大於 1。

[順序] 資料行中的序號可用來指定檔案的安裝順序,以及檔案所在的來源媒體順序(搭配 媒體數據表)。 例如,假設檔案的序號為92。 若要判斷此檔案所在的來源磁碟,請在 Media 數據表中尋找大於 92 之最小 Last Sequence 值的專案。

雖然壓縮檔會在封包內指派內部序號,但這些絕對數位不需要符合 File 資料表內的序號。 不過,重要的是,File 資料表中的檔案順序與封包內的檔案序列相同。

對於未壓縮的檔案,序號不是唯一的。 例如,如果所有檔案都未壓縮,而且全部都位於一個磁碟上,您可以為所有檔案提供相同的序號。

限制上限為 32767 個檔案。 若要建立具有更多檔案的 Windows Installer 套件,請參閱 撰寫大型套件

言論

InstallFilesRemoveFiles順序數據表中的動作, 處理此數據表中的資訊。 如需使用 時序表的詳細資訊,請參閱使用時序表

數據表一開始是從檔案清單產生,但如果使用封包壓縮,則會從壓縮引擎的輸出重新產生數據表。 如需詳細資訊,請參閱 封包檔案

若要在安裝期間行動使用者電腦上的現有檔案,請使用 MoveFiles ActionMoveFile Table。 若要將檔案安裝到多個位置,請使用 DuplicateFiles 動作DuplicateFile 數據表

下表摘要說明 Version 數據行和 Language 資料行中可能的值組合。 如需詳細資訊,請參閱 檔案版本設定規則

版本 語言 描述
1.2.3.4 1033 版本和語言。
1.2.3.4 (Null) 版本,但沒有語言。
1.2.3.4 0 版本和語言是中性的。
Testdb (Null) 沒有相關語言的隨附檔案。
Testdb 1033 隨附檔案和語言。
(Null) 1033 沒有版本,但有與其相關聯的語言(也就是 typelib、helpfile)。

 

如需詳細資訊,請參閱 MsiLockPermissionsEx TableLockPermissions 數據表

驗證

ICE02
ICE03
ICE04
ICE06
ICE18
ICE30
ICE32
ICE35
ICE39
ICE42
ICE45
ICE50
ICE51
ICE54
ICE55
ICE57
ICE59
ICE60
ICE67
ICE69
ICE76
ICE91