应用程序分发程序包操作和检测规则
程序包操作定义了应用程序分发部署程序包的方式。 程序包检测规则可帮助应用程序分发决定是否应将应用程序部署到设备。
程序包操作
在应用程序分发 > 应用程序目录中配置程序包操作。 添加或编辑应用程序,然后选择程序包选项卡。 将要使用的操作拖放到生成器树中。 在生成器树中选择操作以对其进行配置。
可用的程序包操作包括:
这些规则可以帮助确定应用程序是否已安装,如果已安装则不应再次安装。
重要提示:如果任何检测步骤解析为 true,程序包处理将停止,并且设备的应用程序状态将显示为合规。
有关可用检测规则的更多信息,请参阅本主题中后面的程序包检测规则。
:将文件下载至 Ivanti 应用程序分发默认工作路径:
C:\Program Data\Ivanti\Ivanti Cloud Agent\Agent\SWD\working
除非您另有指定,否则任何接受文件路径的操作都将采用此路径。 每个程序包运行之前和之后都会清除此文件夹。
可以在此处指定多个文件,并且可以根据需要配置多个下载文件操作。 文件可以托管在任何 HTTP(S) 位置,前提是该位置不需要身份验证且要部署的客户端可以访问该位置。
云文件资源管理器
使用选择文件按钮可打开云文件资源管理器,您可以在其中从组织的 Microsoft Azure Blob Storage 选择文件。 Ivanti Neurons 不包含 Azure 存储账户。 有关如何在 Azure 中创建存储容器的信息,请参阅这篇 Microsoft 文章。
在使用云文件资源管理器之前,必须先在管理员 > 凭据中添加您的 Azure Blob Storage 凭据。 有关更多信息,请参阅凭据。 对于 Azure,我们建议您在 Ivanti Neurons 中为 Azure key1 和 Azure key2 创建凭据,以实现 Azure 密钥轮换。 随后,您可以在云文件资源管理器中选择所需的账户。
这些凭据用于填写文件夹和文件列表,让下载文件操作可以获取您所选文件的“共享访问签名 URL”(Microsoft Azure)。 客户端不会使用这些凭据。
添加凭据后,您便可以在云文件资源管理器中选择您的云存储账户和容器。 容器浏览器将显示存储在其中的文件和文件夹。 通过选中文件旁的复选框并选择添加按钮来添加一个或多个文件。 您添加的文件的 URL 随后会显示在下载文件操作属性中。
云存储提供商要求生成的 URL 令牌具备有效期。 应用程序分发将令牌的有效期设置为七天,并且每五天更新一次令牌,以防止目标客户端失去访问权限。
查看 Azure Blob Storage 时,会看到一个上传按钮,使用该按钮可以浏览和上传您选择的文件。 上传的文件将放在您在资源管理器中选择的文件夹中。 大文件可能需要一段时间才能完成上传,因此您可能无法立即在资源管理器中看到上传的文件。
按前缀筛选文本框中的云文件筛选受到 Microsoft API 的限制。筛选器仅限于您选择的文件夹,不包括子文件夹。 您输入的筛选器文本必须与文件名完全匹配(区分大小写),并且以所需文件名的第一个字符开头。 您不必输入完整的文件名,只需包含首字母即可。
SHA256 哈希值
下载文件选项还包括可选的哈希值字段。 如果您提供哈希值,应用程序分发将验证下载文件的哈希值。 如果值不匹配,应用程序分发将删除下载的文件并停止分发。 如果您希望应用程序分发使用高级分发技术(例如对等下载),则必须提供哈希值。
简单的执行操作允许您指定要执行的文件、命令行以及应使用何种用户身份运行安装程序。 执行 MSI 以及执行 MSIX 操作允许您选择特定于 MSI、MSP 和 MSIX 的操作和显示选项。
包括创建文件夹;移动、复制和删除文件;压缩或解压缩。
根据设备的代理策略重新启动设备。 当应用程序需要重新启动时,在重新启动之前,无法将其他应用程序安装到该设备。
创建或删除注册表项。 设置或删除注册表值
执行批处理文件或 PowerShell 脚本。 如果缺少 PowerShell Core,PowerShell Core 选项将不会安装 PowerShell Core。 自动选项将首先尝试使用 PowerShell Core,如果其未安装,则会回退到 PowerShell。此操作内置脚本编辑器。 您的脚本代码需要添加到该编辑器中。
暂停程序包执行指定的秒数。 如果前面的操作需要更多时间才能完成,请使用此选项。
程序包检测规则
程序包检测规则可以帮助确定程序包是否已安装,如果已安装则不应再次安装。
在应用程序分发 > 应用程序目录中配置程序包检测规则。 添加或编辑应用程序,然后选择程序包选项卡。 添加检测部署前操作到生成器树并选择该操作以对其进行配置。
仅在开始处理程序包时检查检测规则,因此如果使用检测操作,其将始终是生成器中的第一个项目。 检测规则按照定义它们的顺序运行。
重要提示:如果任何检测步骤解析为 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。 这将帮助您找到您感兴趣的日志文件。
您可以从应用程序分发 > 部署状态页面远程查看简化日志。 找到您要查看的设备和程序包,然后在右侧选择操作菜单的查看日志选项。