檔案數據表
檔案數據表包含原始程序檔的完整清單,其中包含其各種屬性,依唯一、非本地化、標識元排序。 檔案可以儲存在來源媒體上做為個別檔案,或在 封包檔案中壓縮。 如需詳細資訊,請參閱使用封包和壓縮來源 。
檔案數據表具有下列數據行。
列 | 類型 | 鑰匙 | 空 |
---|---|---|---|
檔 | 識別碼 | 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 檔案的來源類型未壓縮。 如果已設定,請忽略 字數摘要 屬性。 如果未設定 msidbFileAttributesNoncompressed 或 msidbFileAttributesCompressed,檔案的壓縮狀態是由 Word Count Summary 属性所指定。 請勿同時設定 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 msidbFileAttributesCompressed 0x004000 16384 檔案的來源類型已壓縮。 如果已設定,請忽略 字數摘要 屬性。 如果未設定 msidbFileAttributesNoncompressed 或 msidbFileAttributesCompressed,檔案的壓縮狀態是由 Word Count Summary 属性所指定。 請勿同時設定 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 如果已設定 attributes 數據行內的 msidbFileAttributesVital 位,而且如果選取檔案所屬的元件進行安裝,則安裝程式必須能夠安裝此檔案,才能順利完成安裝。 如果安裝程式因某種原因而無法安裝檔案(例如,如果來源檔案無法位於來源映射內),則會出現錯誤對話方塊,並顯示 [重試] 或 [取消] 選項。 對於沒有 msidbFileAttributesVital 設定的檔案,安裝錯誤的選項會是 「中止」、「重試」和「忽略」(也就是說,用戶可以選擇在不安裝該檔案的情況下順利完成安裝)。
在 [屬性] 數據行內的 msidbFileAttributesChecksum 位,應該針對安裝中的每個可執行檔設定,該可執行檔具有有效的 總和檢查碼 儲存在可攜式可執行檔 (PE) 檔案標頭中。 在重新安裝期間,只會驗證已設定此位的檔案是否有有效的總和檢查碼。 如需詳細資訊,請參閱 REINSTALLMODE。
-
序列
-
此檔案在媒體影像上的順序位置。 如果壓縮盤案,此順序必須對應至封包中檔案的順序。 此欄位中的整數必須等於或大於 1。
[順序] 資料行中的序號可用來指定檔案的安裝順序,以及檔案所在的來源媒體順序(搭配 媒體數據表)。 例如,假設檔案的序號為92。 若要判斷此檔案所在的來源磁碟,請在 Media 數據表中尋找大於 92 之最小 Last Sequence 值的專案。
雖然壓縮檔會在封包內指派內部序號,但這些絕對數位不需要符合 File 資料表內的序號。 不過,重要的是,File 資料表中的檔案順序與封包內的檔案序列相同。
對於未壓縮的檔案,序號不是唯一的。 例如,如果所有檔案都未壓縮,而且全部都位於一個磁碟上,您可以為所有檔案提供相同的序號。
限制上限為 32767 個檔案。 若要建立具有更多檔案的 Windows Installer 套件,請參閱 撰寫大型套件。
言論
InstallFiles 和 RemoveFiles順序數據表中的動作, 處理此數據表中的資訊。 如需使用 時序表的詳細資訊,請參閱使用時序表 。
數據表一開始是從檔案清單產生,但如果使用封包壓縮,則會從壓縮引擎的輸出重新產生數據表。 如需詳細資訊,請參閱 封包檔案。
若要在安裝期間行動使用者電腦上的現有檔案,請使用 MoveFiles Action 和 MoveFile 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 Table 和 LockPermissions 數據表。
驗證
ICE02
ICE03
ICE04
ICE06
ICE18
ICE30
ICE32
ICE35
ICE39
ICE42
ICE45
ICE50
ICE51
ICE54
ICE55
ICE57
ICE59
ICE60
ICE67
ICE69
ICE76
ICE91