共用方式為


登錄表

登錄資料表會保存應用程式在系統登錄中必須設定的登錄資訊。

登錄數據表具有下列數據行。

類型 鑰匙
註冊表 識別碼 Y N
整數 N N
鑰匙 RegPath N N
名字 格式化 N Y
價值 格式化 N Y
元件_ 識別碼 N N

 

登錄

用來識別登錄記錄的主鍵。

登錄值的預先定義根機碼。 在此欄位中輸入 -1 值,讓根金鑰取決於安裝類型。 在下表中輸入其中一個其他值,強制在特定根機碼下寫入登錄值。

不斷 十六進位 十進位 根索引鍵
(無) - 0x001 -1 如果這是每個使用者安裝,登入值會寫入 HKEY_CURRENT_USER。 如果這是每部計算機的安裝,登錄值會寫入 HKEY_LOCAL_MACHINE下。 請注意,將 ALLUSERS 屬性設定為 1 來指定每部機器安裝。
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOT安裝程式會在安裝每個使用者 安裝內容期間,從 HKCU\Software\Classes hive 中寫入或移除值。
安裝程式會在每部計算機安裝期間,從 HKLM\Software\Classes hive 中寫入或移除值。
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

請注意,建議寫入 HKCU 的登入項目 hive 參考已在 Component 資料表的 Attributes 資料行中設定 RegistryKeyPath 位的元件,。 這可確保當同一部計算機上有多個使用者時,安裝程式會寫入必要的登錄專案。

金鑰

登錄值的可當地語系化機碼。

名稱

此數據列包含登錄值名稱(可本地化)。 如果這是 Null,則輸入 [值] 資料行的數據會寫入預設登錄機碼。

如果 Value 資料行為 Null,則 Name 數據行中下表所示的字串具有特殊意義。

字串 意義
+ 安裝元件時,如果不存在,則會建立密鑰。
- 卸載元件時,如果存在,則會刪除索引鍵及其所有值和子機碼。
* 安裝元件時,如果不存在,則會建立密鑰。 此外,卸載元件時,如果存在,則會刪除索引鍵及其所有值和子機碼。

 

請注意,RemoveRegistry 資料表 必須在安裝元件時刪除已安裝的登錄機碼及其值和子機碼時使用。

此資料列是可本地化的登錄值。 欄位 格式化。 如果值附加至下列其中一個前置詞(也就是 #%),則會解譯值,如數據表中所述。 請注意,每個前置詞的開頭都是數字符號 (#)。 如果值以兩個或多個連續數字符號 (#) 開頭,則會忽略第一個 # ,並將值解譯並儲存為字串。

前綴 意義
#x 此值會解譯並儲存為十六進位值(REG_BINARY)。
#% 此值會解譯並儲存為可展開的字串(REG_EXPAND_SZ)。
# 值會解譯並儲存為整數(REG_DWORD)。

 

  • 如果值包含時序圖格 [~],則值會解譯為以 Null 分隔的字串清單(REG_MULTI_SZ)。 例如,若要指定包含 a、 b 和 c 三個字串的清單,請使用 “a[~]b[~]c”。
  • 值內的序列 [~] 會分隔個別字串,並解譯並儲存為 Null 字元。
  • 如果 [~] 在字串清單之前,字串會附加至任何現有的登錄值字串。 如果登錄值中已經發生附加字串,則會移除原始出現的字串。
  • 如果 [~] 遵循字串清單的結尾,字串會前面加上任何現有的登錄值字串。 如果登錄值中已經出現前置字串,則會移除原始出現的字串。
  • 如果 [~] 同時位於開頭和結尾,或不是字串清單的開頭或結尾,則字串會取代任何現有的登錄值字串。
  • 否則,值會解譯並儲存為字串(REG_SZ)。

Component_

元件數據表的第一個數據行的外部索引鍵, 參考控制登錄值安裝之元件的元件。

言論

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

當選取要安裝在本機的對應元件或從來源執行時,登錄資訊會寫出至系統登錄。

請注意,安裝程式會在移除機碼底下的最後一個值或子機碼之後移除登錄機碼。 若要防止在卸載時移除空的登錄機碼,請在 [名稱] 資料行中,於您需要保留的機碼下寫入虛擬值並輸入 + 。 如果 * 位於 Name 資料行中,則會在移除元件時,刪除索引鍵及其所有值和子機碼。

自定義動作可用來在安裝、卸載或修復交易期間,將數據列新增至登錄數據表。 這些數據列不會保存在登錄數據表中,而且資訊只能在目前交易期間使用。 因此,必須在需要這些額外數據列資訊的每個安裝、卸載或修復交易中執行自定義動作。 自定義動作必須位於動作順序中的 RemoveRegistryValuesWriteRegistryValues 動作之前。

如需如何保護登錄機碼的資訊,請參閱 MsiLockPermissionsEx TableLockPermissions Table

驗證

ICE02
ICE03
ICE06
ICE32
ICE38
ICE43
ICE46
ICE49
ICE53
ICE55
ICE57
ICE70
ICE80