共用方式為


MsiSourceListAddSourceExW 函數 (msi.h)

MsiSourceListAddSourceEx 函式會在特定情境中新增或重新排序修補或產品的來源集合。 它也能建立一個在指定情境中不存在的補丁原始碼清單。

語法

UINT MsiSourceListAddSourceExW(
  [in]           LPCWSTR           szProductCodeOrPatchCode,
  [in, optional] LPCWSTR           szUserSid,
  [in]           MSIINSTALLCONTEXT dwContext,
  [in]           DWORD             dwOptions,
  [in]           LPCWSTR           szSource,
  [in, optional] DWORD             dwIndex
);

參數

[in] szProductCodeOrPatchCode

產品或補丁的 ProductCode 或補丁 GUID。 使用空終端字串。 若字串長度超過 39 個字元,函式失敗並回傳 ERROR_INVALID_PARAMETER。 這個參數不能 NULL

[in, optional] szUserSid

這個參數可以是字串 SID,用來指定包含產品或補丁的使用者帳號。 SID 尚未被驗證或解決。 錯誤的 SID 可能會回傳 ERROR_UNKNOWN_PRODUCTERROR_UNKNOWN_PATCH。 在引用機器上下文時,szUserSID 必須是 NULL,dwContext 必須MSIINSTALLCONTEXT_MACHINE

SID 類型 Meaning
NULL
NULL 表示目前登入的使用者。 在參考目前使用者帳號時,szUserSID 可以是 NULL,dwContext 可以是MSIINSTALLCONTEXT_USERMANAGEDMSIINSTALLCONTEXT_USERUNMANAGED
使用者 SID
指定系統中特定使用者的列舉方式。 使用者 SID 的範例為「S-1-3-64-2415071341-1358098788-3127455600-2561」。
 
便條 特殊 SID 字串 s-1-5-18(系統)無法用來列舉每台機器安裝的產品或補丁。 將 SID 值設為「S-1-5-18」則返回 ERROR_INVALID_PARAMETER
 
便條 特殊 SID 字串 s-1-1-0(所有人)不應使用。 將 SID 值設為「S-1-1-0」失敗,並返回 ERROR_INVALID_PARAM
 

[in] dwContext

此參數指定產品或補丁實例的上下文。 此參數可包含以下其中一個值。

語境類型 Meaning
MSIINSTALLCONTEXT_USERMANAGED
產品或修補實例存在於每位使用者管理的情境中。
MSIINSTALLCONTEXT_USERUNMANAGED
產品或修補實例存在於每個使用者未管理的上下文中。
MSIINSTALLCONTEXT_MACHINE
產品或補丁實例存在於每台機器的情境中。

[in] dwOptions

dwOptions 值決定 szProductCodeOrPatchCode 值的解釋及需清除來源的類型。 此參數必須是以下MSISOURCETYPE_常數之一與MSICODE_常數之一的組合。

Flag Meaning
MSISOURCETYPE_NETWORK
來源是一種網路類型。
MSISOURCETYPE_URL
來源是一個網址類型。
MSICODE_PRODUCT
szProductCodeOrPatchCode 是一個產品代碼。
MSICODE_PATCH
szProductCodeOrPatchCode 是一個補丁代碼。

[in] szSource

新增或移動的來源。 此參數預期僅包含路徑,而非檔名。 該檔名已註冊為「PackageName」,可透過 MsiSourceListSetInfo 操作。 這個參數是必需的。

[in, optional] dwIndex

此參數提供來源的新索引。 所有來源在來源列表中的索引範圍從 1 到 N,其中 N 是列表中的來源數量。 列表中的每個來源都有獨特的索引。

如果 MsiSourceListAddSourceEx 被呼叫,且 dwIndex 設為 0(0),則新來源會附加到現有清單中。 如果 dwIndex 設為 0,且來源已經存在於清單中,則不會對清單進行更新。

若呼叫 MsiSourceListAddSourceEx 並設定新來源且 dwIndex 設定為小於 count (N) 的非零值,則新來源會被放置於指定索引,其他來源則重新索引。 如果來源已經存在,則會移至指定索引,其他來源則重新索引。

如果呼叫 MsiSourceListAddSourceEx 並設定新來源, dwIndex 設定為大於來源數量 (N) 的非零值,則新來源會附加到現有清單中。 若來源已存在,則移至列表末尾,其他來源則重新索引。

返回值

MsiSourceListAddSourceEx 函式回傳以下值。

價值觀 Meaning
ERROR_ACCESS_DENIED
使用者無法新增或移動來源。 無法顯示是否找到該產品或貼片。
ERROR_BAD_CONFIGURATION
設定資料損壞了。
ERROR_INSTALL_SERVICE_FAILURE
無法存取 Windows 安裝程式服務。
ERROR_SUCCESS
來源入或更新。
ERROR_UNKNOWN_PRODUCT
所指定的產物不詳。
ERROR_UNKNOWN_PATCH
指定的補丁名稱不詳。
ERROR_FUNCTION_FAILED
意外的內部故障。

備註

管理員可以修改存在於機器情境下的產品或修補實例的安裝,或是在他們自己的每位使用者情境(受管理或非受管理)下。他們可以修改存在於任何使用者每位使用者管理情境下的產品或修補實例的安裝方式。 管理員無法修改其他使用者在該使用者的每個使用者未管理情境下所安裝的產品或修補實例。

非管理員無法修改存在於其他使用者每使用者情境(受管理或非管理)下的產品或修補實例的安裝。他們可以修改存在於其每個使用者未管理上下文下的產品或修補實例的安裝。 只有在啟用瀏覽產品或補丁來源時,他們才能在機器上下文或自身的每用戶管理上下文中修改產品或補丁實例的安裝。 使用者可透過設定政策來瀏覽來源。 欲了解更多資訊,請參閱 DisableBrowseAllowLockdownBrowseAlwaysInstallElevated 政策。

備註

msi.h 標頭定義 MsiSourceListAddSourceEx 為別名,根據 UNICODE 預處理器常數的定義自動選擇此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型 慣例。

需求

Requirement 價值觀
最低支援的用戶端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 請參閱 Windows 安裝程式 Run-Time 需求,了解 Windows 安裝程式版本所需的最低 Windows 服務包。
目標平臺 窗戶
Header MSI.H
Library Msi.lib
DLL Msi.dll

另請參閱

允許封鎖瀏覽

AlwaysInstallElevated

Disable瀏覽

MsiSourceListSetInfo

Windows 安裝程式 2.0 及更早版本不支援

ProductCode

來源韌性