登錄表

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

登錄資料表具有下列資料行。

資料行 類型 答案 Nullable
登錄 識別碼 Y N
Root 整數 N N
答案 RegPath N N
名稱 格式 化 N Y
格式 化 N Y
元件_ 識別碼 N N

 

資料行

註冊 表

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

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

常數 十六進位 Decimal 根索引鍵
(無) - 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,則輸入 [值] 資料行中的資料會寫入預設登錄機碼。

如果 [值] 資料行為 Null,則 [名稱] 資料行中下表所示的字串具有特殊重要性。

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

 

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

價值

此資料行是可當地語系化的登錄值。 欄位為 Formatted。 如果值附加至下列其中一個前置詞 (亦即 #%value) 則值會解譯為數據表中所述。 請注意,每個前置詞的開頭都是數位記號 (#) 。 如果值以兩個以上的連續數位記號 (#) 開頭,則會忽略第一個 #,並將值解譯並儲存為字串。

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

 

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

元件_

外部機碼會參考控制登錄值安裝之元件的 Component 資料表 的第一個資料行。

備註

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

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

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

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

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

驗證

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