应用程序分发检测规则
应用程序分发的程序包检测规则可以帮助确定程序包是否已安装,如果已安装则不应再次安装。
配置应用程序分发 > 应用程序目录中的检测规则。添加或编辑应用程序,然后选择程序包选项卡。
仅在开始处理程序包时检查检测规则,因此如果使用检测操作,其将始终是生成器中的第一个项目。 检测规则按照定义它们的顺序运行。
重要提示:如果任何检测步骤解析为 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。任何其他退出代码都被视为错误。退出代码必须是数字,而不是单词“True”。使用内置脚本编辑器创建脚本。
使用内置脚本编辑器创建脚本,或者您可以使用选择文件选项并浏览以查找文件。您提供的文件和路径必须存在于目标系统上。如果设备上尚未存在脚本文件,请使用下载文件操作将其放置在设备上。执行此操作时,下载的文件将放置在默认路径中,您只需指定文件名即可。
由于检测规则在其他程序包操作之前运行,因此这将检测规则脚本置于应用程序安装过程中的独特阶段。可以在此处执行更复杂的操作,例如运行自定义升级脚本来查找较旧的应用程序安装,如果找到它,则在继续处理程序包的其余部分之前将其卸载。
检测规则和操作日志记录
应用程序分发为部署到设备的每个应用程序创建一个日志文件。该日志包含每个检测规则和其他程序包操作的条目。如果检测规则未按预期工作,请使用日志文件来帮助确定原因。每个设备上的日志都存储在该文件夹中:
- C:\ProgramData\Ivanti\Ivanti Cloud Agent\Logs\SWDApps
每个日志文件名都包含程序包 GUID。如果您在应用程序目录中编辑程序包,您可以在 Web 浏览器 URL 中看到其程序包 GUID。这将帮助您找到您感兴趣的日志文件。
您可以从应用程序分发 > 部署状态页面远程查看简化日志。找到您要查看的设备和程序包,然后在右侧选择操作菜单的查看日志选项。