應用程式發佈套件動作和偵測規則
套件動作定義應用程式發佈會如何部署您的套件。 套件偵測規則可協助應用程式發佈決定是否應將應用程式部署到裝置。
套件動作
在應用程式發佈 > 應用程式目錄中設定套件動作。 新增或編輯應用程式,然後選取套件索引標籤。 將要使用的動作拖曳到建立器樹狀結構中。 在建立器樹狀結構中選取一個動作進行設定。
可用的套件動作包括:
這些規則有助於判斷應用程式是否已安裝,因此不應再次安裝。
重要: 如果任何偵測步驟解析為 true,則套件處理會停止,且裝置的應用程式狀態將顯示為合規。
如需可用偵測規則的詳細資訊,請參閱套件偵測規則。
將檔案下載到 Ivanti 應用程式發佈預設工作路徑:
C:\Program Data\Ivanti\Ivanti Cloud Agent\Agent\SWD\working
除非您另外指定,否則任何接受檔案路徑的動作都將採用此路徑。 在執行每個套件前後都會清除此資料夾。
如有需要,您可以在此處指定多個檔案,並且可以有多個下載檔案動作。 檔案可以託管於任何不需要驗證且您要部署至其中的用戶端可存取的 HTTP(S) 位置。
您可以在來源 URL 欄位中輸入或貼上 URL。 您提供的 URL 必須直接連結到您要下載的檔案。 從 URL 偵測到的檔案名稱將顯示在選擇檔案按鈕旁邊。
如有必要,請使用新增檔案按鈕新增其他下載檔案 URL。 如果您的檔案儲存在 Microsoft Azure Blob 儲存體或 Amazon Web Services 貯體中,請使用選擇檔案按鈕開啟雲端檔案總管。
雲端檔案總管
選擇檔案按鈕可開啟雲端檔案總管,讓您可以從貴組織的 Microsoft Azure Blob 儲存體或 Amazon Web Services 貯體中選擇檔案。 Ivanti Neurons 並未隨附 Azure 和 Amazon 儲存體帳戶。
- 如需如何在 Azure 中建立儲存體容器的相關資訊,請參閱這篇 Microsoft 文章。
- 如需如何在 Amazon S3 中建立貯體的相關資訊,請參閱這篇 Amazon 文章。
使用雲端檔案總管之前,您必須在管理員 > 認證中新增 Azure Blob 儲存體或 Amazon S3 認證。 如需詳細資訊,請參閱憑證。 對於 Azure,建議您在 Ivanti Neurons 中為 Azure key1 和 Azure key2 建立認證,以允許 Azure 金鑰輪替。 然後,您可以在雲端檔案總管中選取所要的帳戶。
這些認證用於填入資料夾和檔案清單,以便下載檔案動作可以取得所選檔案的共用存取簽章 URL (Microsoft Azure) 或預先簽署的 URL (Amazon Web Services)。 用戶端不會使用這些認證。
新增認證後,您可以在雲端檔案總管中選取您的雲端儲存帳戶和容器或貯體。 容器瀏覽器會顯示保存在其中的檔案和資料夾。 透過選取一或多個檔案旁邊的核取方塊,然後選取新增按鈕來新增一或多個檔案。 然後,新增之檔案的 URL 會顯示在下載檔案動作屬性中。
雲端保存提供者要求產生的 URL 權杖需具有到期時間。 應用程式發佈會將權杖到期時間設定為七天,並每五天更新一次權杖,以防目標用戶端失去存取權限。
按前置詞篩選文字方塊中的雲端檔案篩選功能僅適用於 Microsoft 和 Amazon S3 API。 節選器僅限於您選取的資料夾中運作,不包括子資料夾。 您輸入的篩選文字必須與檔案名稱 (區分大小寫) 完全相符,並以想要之檔案名稱的第一個字元開頭。 不必包含完整的檔案名稱,只需包含初始字元即可。
選取刪除將刪除選取的物件 (檔案或資料夾)。 請在按一下「刪除」之前,確定僅選取了一個物件。 如果您嘗試一次刪除多個物件,系統會發出錯誤訊息。 如果您想要刪除資料夾,必須先刪除該資料夾的內容 (一次刪除一個物件)。
Ivanti 雲端儲存空間
在 2024.4 版中,Ivanti 已新增對 Ivanti 雲端儲存空間的支援,您可以使用該儲存空間來儲存要發佈的套件和檔案。 這對於還沒有 Azure Blob 儲存體或 Amazon S3 儲存帳戶的客戶很有幫助。
使用 Ivanti 雲端儲存空間無需額外組態或認證。 每個 Ivanti Neurons 租用戶都有自己的 Ivanti Azure 儲存體容器。
在應用程式發佈的下載檔案動作中,您可以存取雲端檔案總管。 您可以在帳戶底下選取 Ivanti 儲存。 然後您可以使用上傳檔案按鈕,上傳您要發佈的檔案。 您也可以使用刪除按鈕來移除檔案。
使用 Ivanti 雲端儲存空間時,請記住以下幾點:
- Ivanti 雲端儲存空間限 10 GB,而且雲端儲存總管將顯示您正在使用多少空間。 您無法擴充此儲存空間的容量。
- 這裡的檔案大小不得超過 2 GB。
- Ivanti 包含可掃描上傳檔案是否有惡意軟體的服務。 如果偵測到惡意軟體,該檔案將會遭到刪除,並且 Ivanti Neurons 通知訊息將會指出發生這種情況。
- 如果您僅使用 Ivanti 雲端儲存空間,則無需設定跨來源資源共用 (CORS)。
- 不支援建立資料夾。
上傳檔案
使用上傳檔案按鈕瀏覽並上傳您選取的檔案。 上傳的檔案會放置在您於檔案總管選取的資料夾中。 上傳的檔案不得大於 2 GB。 一次只能上傳一個檔案。 大型檔案可能需要一段時間才能完成上傳,因此您可能無法立即在檔案總管中看到上傳的檔案。
當您選取的檔案準備上傳時,系統會顯示一個進度列。 上傳過程中,進度指示器會顯示工作進度。 上傳完成後,系統會顯示一則訊息,指出上傳成功或失敗。
如果要上傳大於 2 GB 的檔案,請使用 Amazon 或 Azure 原生管理工具進行上傳。
您必須先設定跨來源資源共用 (CORS),然後才能上傳檔案。 如果您嘗試上傳檔案但未設定 CORS,系統會顯示一則訊息,提示您需要先設定 CORS。
Azure Blob 儲存體上傳組態
Azure 會在帳戶層級而非容器層級設定 CORS。 關於在 Microsoft 中設定 CORS 的相關資訊,可參閱這裡。
- 允許的方法: PUT
- 允許的標頭: content-type、x-ms-client-request-id、x-ms-useragent、x-ms-version
- 暴露的標頭: Etag
- 允許的來源: Ivanti Neurons 登入頁面的瀏覽器 URL (不是登入後的 URL) 中顯示的網域。 這會依租用戶的託管位置而有所不同。 範例包括 https://nvuprd-sfc.ivanticloud.com、https://ukuprd-sfc.ivanticloud.com 等。
Amazon S3 上傳組態
Amazon S3 會在貯體層級而非帳戶層級設定 CORS。 關於在 Amazon 中設定 CORS 的相關資訊,可參閱這裡。
- 允許的方法: PUT
- 允許的標頭: content-type
- 暴露的標頭: Etag
- 允許的來源: Ivanti Neurons 登入頁面的瀏覽器 URL (不是登入後的 URL) 中顯示的網域。 這會依租用戶的託管位置而有所不同。 範例包括 https://nvuprd-sfc.ivanticloud.com、https://ukuprd-sfc.ivanticloud.com 等。
SHA256 雜湊值
下載檔案選項還包括選用的雜湊值欄位。 如果您提供雜湊值,應用程式發佈將會驗證所下載檔案的雜湊值。 如果值不相符,應用程式發佈將會刪除下載的檔案並停止發佈。 如果您希望應用程式發佈使用像是對等下載等進階發佈技術,則必須提供雜湊值。
單純的執行動作可讓您指定要執行的檔案、命令列,以及要用來執行安裝程式的使用者身分。 執行 MSI 與執行 MSIX 動作可讓您選取 MSI、MSP 和 MSIX 專屬的操作和顯示選項。
包括建立資料夾;移動、複製和刪除檔案;壓縮或解壓縮。
根據裝置的代理程式原則將裝置重新開機。 當應用程式需要重新開機時,在裝置重新開機之前,無法在該裝置上安裝任何其他應用程式。
建立或刪除登錄機碼。 設定或刪除登錄值。
執行批次檔或 PowerShell 指令碼。 如果缺少 PowerShell Core 選項,則不會安裝 PowerShell Core。 自動選項會先嘗試 PowerShell Core,如果未安裝,則會切換回 PowerShell。此動作內建了指令碼編輯器。 您需要將指令碼程式碼新增至此編輯器中。
依照您指定的秒數暫停套件的執行。 如果較早的動作需要額外的時間才能完成,可使用此項。
使用 Windows 套件管理器 (winget) 管理套件。
當您在應用程式目錄首頁中選取新增應用程式 > Windows 套件管理員 (winget) 並選取套件時,此動作會自動完成設定。 此動作不需要執行任何其他動作或修改,即可運作。
如有必要,您可以手動新增和設定此動作。 此動作也可以與其他動作和偵測規則結合使用。
關於使用 winget 的更多資訊,請參閱此 Microsoft 主題。
套件管理器需要受管理裝置上有最新版本的 winget。 如果您在受管理裝置上停用了 Microsoft Store,則其 winget 版本可能較舊,並且向其分發套件管理器可能會失敗。 若要解決此問題,請部署套件來更新 winget 版本,或啟用 Microsoft Store。
套件管理員選項面板包含選取套件按鈕,此按鈕會顯示 winget 目錄中的可用套件。這與您使用應用程式目錄首頁中的新增應用程式按鈕時顯示的目錄相同。
應用程式目錄僅包含 winget 存放庫中的應用程式,而不包含 msstore 存放庫中的應用程式。 如果您有 msstore 應用程式 ID,則可以在命令列上的 --id 參數後面手動指定該 ID,如本節稍後所述。
在搜尋套件方塊中輸入文字,可搜尋目錄中所有套件的所有中繼資料。 若要搜尋特定中繼資料類別中的套件文字,請以 name:、publisher: 等為開頭進行搜尋,如以下您選取搜尋欄位時的範例所示。
應用程式發佈會安裝您選取之套件的最新可用版本,無論目錄中顯示的版本為何。 您也可以手動設定動作來安裝特定版本。
在目錄中選擇一個 winget 套件來填入命令列引數,可安裝該套件。 如有需要,可以修改命令列。
以下是一個典型的 winget 命令列:
install -e --id GitHub.GitHubDesktop --accept-package-agreements --accept-source-agreements --silent
若要安裝應用程式目錄中並未列出的套件,可以建立自己的 winget 命令列。 在 Windows 命令提示字元中,winget search <query> 命令會傳回相符套件的清單。 找到所要套件的 ID 欄字串,然後在 winget 命令列上將其新增至 --id 參數後方。
winget 套件的作者可以在套件中包含範圍為 user (登入使用者)、machine (所有使用者) 或 null (未指定) 的安裝程式。 在預設情況下,winget 會嘗試為裝置選取最符合的範圍,通常是 user。
您可以透過在命令列中使用 --scope 參數來指定範圍,以覆寫此自動選取。 例如,如果您希望為裝置上的所有使用者安裝此套件,則可以在 winget 命令列中包含 --scope machine。 請注意,如果套件不支援 machine 範圍,而您在命令列中包含該參數,則套件安裝將失敗。
一如既往,請務必在部署套件之前先測試命令列。
套件偵測規則
套件偵測規則有助於判斷套件是否已安裝,因此不應再次安裝。
在應用程式發佈 > 應用程式目錄中設定套件偵測規則。 新增或編輯應用程式,然後選取套件索引標籤。 將偵測預先部署動作新增到建立器樹狀結構中,並選取其進行設定。
只有在處理套件的一開始會檢查偵測規則,因此偵測動作一律是建立器中的第一個項目 (如有使用)。 偵測規則會按照其定義順序執行。
重要: 如果任何偵測步驟解析為 true,則套件處理會停止,且裝置的應用程式狀態將顯示為合規。
可用的偵測規則包括:
提供完整的檔案路徑與檔案名稱。 選取存在或不存在。
檔案版本資訊通常僅適用於可執行檔。 應用程式發佈會使用「檔案版本」值,而不是「產品版本」值。 提供完整的檔案路徑與檔案名稱。 運算子可以是小於或大於、等於或介於的變體。 如果您指定的檔案與路徑不存在,或者檔案沒有可剖析的版本,會傳回 false。
有關版本與比較運算子運作方式的詳細資訊,請參閱 Microsoft 的此篇文章。
提供完整的檔案路徑與檔案名稱。 指定檔案大小 (以位元組為單位)。 應用程式發佈會使用「大小」,而不是「磁碟上的大小」。如果您指定的檔案與路徑不存在,會傳回 false。
提供完整的檔案路徑與檔案名稱。 選取您要比較的 SHA-2 位元長度。 如果您指定的檔案與路徑不存在,會傳回 false。 您可以使用 PowerShell 產生雜湊摘要:
-
Get-FileHash -Algorithm SHA256 -Path C:\MyApp\myfile.exe
此規則只會檢查日期,不會檢查時間。 提供完整的檔案路徑與檔案名稱。 選取一個運算子,例如等於。 檔案日期必須以 UTC (國際標準時間) 指定,以與您地區設定的 mm/dd/yyyy 格式等同項目相符。 應用程式發佈會使用「已修改」日期,而不是「已建立」日期。 如果您指定的檔案與路徑不存在,會傳回 false。 您可以使用 PowerShell 擷取 UTC 格式的檔案日期:
-
(Get-Item C:\MyApp\myfile.exe).LastWriteTimeUtc
提供 MSI 產品代碼 GUID 並選取 MSI 已安裝還是未安裝。 使用 Microsoft 的 Orca 工具檢視 "ProductCode" GUID。 您也可以在以下登錄機碼下查看已安裝的 MSI GUID:
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
提供您要偵測之機碼的登錄機碼資訊。
- 登錄版本: 視適當情況選取 32 位元或 64 位元,或者如果您想自動比對目標裝置使用的版本,可以選取系統。
- 根機碼: 選取包含您要偵測之機碼的根機碼,例如 HKEY_LOCAL_MACHINE。
- 機碼: 輸入您要偵測之登錄機碼名稱的完整路徑 (不包含您已經指定的根機碼)。
- 指定存在或不存在
提供您要偵測之值的登錄機碼與值資訊。 如果機碼或值不存在或者無法由使用者存取,規則會傳回 false (除非比較運算子為不存在)。
您必須指定值名稱,除非您要檢查「(預設值)」的值,在這種情況下必須將其保留空白。
進行版本比較時,比較運算元以及與登錄值相關聯的資料必須採用此處描述的版本格式。 如果其中任何一個項目並非如此,偵測規則 (與套件) 將產生錯誤。
有關版本與比較運算子運作方式的詳細資訊,請參閱 Microsoft 的此篇文章。
字串比較要區分大小寫。 如果登錄值包含非 REG_SZ (字串) 類型的資料,會將其轉換為字串,如下所示:
- REG_DWORD: 使用十進位形式 (如 regedit.exe 中所示)。
- REG_QWORD: 使用十進位形式 (如 regedit.exe 中所示)。
- REG_BINARY: 使用 regedit.exe 所用位元組對形式,但要大寫 (例如 "46 AA 6C 6B 65 6E")。
- REG_MULTI_SZ: 行與空格會串連在一起形成單行 (例如 "Line1 Line2 Line3")。
- REG_EXPAND_SZ: 所有環境變數都會展開。
偵測指令碼可以使用 PowerShell (不是 PowerShell Core) 或批次語法。 偵測是否成功取決於指令碼的數字結束代碼。 結束代碼 "0" (零) 等於 true。 其他任何結束代碼均視為 false。 結束代碼必須為數字,而非字詞 "True"。 使用內建指令碼編輯器建立指令碼。
使用內建指令碼編輯器建立指令碼,或者您可以使用選取檔案選項並瀏覽以尋找檔案。 您提供的檔案與路徑必須存在於目標系統上。 如果裝置上還沒有指令碼檔案,請使用下載檔案動作將其放置在此。 執行此操作時,會將下載的檔案放置在預設路徑中,您只需指定檔案名稱即可。
由於偵測規則會在其他套件動作之前執行,因此這會將偵測規則指令碼放置在應用程式安裝程序中的獨特階段。 您可以在此處執行更複雜的操作,例如執行自訂升級指令碼來尋找較舊的應用程式安裝,若找到它,則在繼續處理套件的其餘部分之前將其解除安裝。
偵測規則與動作記錄
應用程式發佈會針對部署到裝置的每個應用程式建立一個記錄檔。 此記錄中包含適用於每個偵測規則與其他套件動作的項目。 如果偵測規則未如預期運作,請使用記錄檔來協助確定原因。 記錄會保存在每個裝置的此資料夾中:
- C:\ProgramData\Ivanti\Ivanti Cloud Agent\Logs\SWDApps
每個記錄檔名稱都包含套件 GUID。 如果您在應用程式目錄中編輯套件,可以在網頁瀏覽器 URL 中看到其套件 GUID。 這將協助您找到自己感興趣的記錄檔。
您可以從應用程式發佈 > 部署狀態頁面遠端檢視簡化的記錄。 尋找您要查看的裝置與套件,然後在右側選取動作功能表的檢視記錄選項。