【发布时间】:2016-08-02 13:51:36
【问题描述】:
我创建了一个基本的 MSI 项目,它将在机器上安装一些应用程序。我的第一步是将几个文件夹和文件复制到目标机器。然后我创建了两个自定义操作来运行 exe 文件。如果该特定应用程序已安装在机器上,我想跳过自定义操作。此外,在复制文件夹和文件时,如果文件夹或文件已存在于机器上,我想跳过。我尝试使用安装条件、条件生成器、系统搜索,但无法解决。
请提供解决这些问题的任何想法。非常感谢您的回答。
【问题讨论】:
我创建了一个基本的 MSI 项目,它将在机器上安装一些应用程序。我的第一步是将几个文件夹和文件复制到目标机器。然后我创建了两个自定义操作来运行 exe 文件。如果该特定应用程序已安装在机器上,我想跳过自定义操作。此外,在复制文件夹和文件时,如果文件夹或文件已存在于机器上,我想跳过。我尝试使用安装条件、条件生成器、系统搜索,但无法解决。
请提供解决这些问题的任何想法。非常感谢您的回答。
【问题讨论】:
这一切都可以通过使用 System Search.Refer (http://helpnet.flexerasoftware.com/isxhelp22/helplibrary/NewLaunchCondition.htm) 来解决
1) 要检查文件是否存在,请选择(文件路径,通过搜索文件夹),输入文件名,选择目录并根据提到的目录分配深度。 假设 A.txt 存在于 \B\C 文件夹中,并且您在搜索时选择 B,那么深度应该 >=2。如果文件存在,此过程中提到的属性将设置为文件路径。
2)要检查文件夹是否存在选择(文件夹路径,通过在特定文件夹中搜索),按照上述过程并提及文件夹名称而不是文件名。
3) 要检查应用程序是否已安装,您可以按照上述过程之一进行检查并找到应用程序特定的文件夹/文件。 最后,使用公共属性作为自定义操作和组件的条件。假设您正在检查文件并设置属性 ASONFILEFOUND,只需在组件/自定义操作条件中提及这一点,如果文件存在,这些将不会运行。 如果您仍然遇到问题,请启用 Windows 日志记录并查看日志以检查系统搜索中使用的属性是否已设置。
【讨论】:
执行-MSI -Action Install -Path 'AcroRead.msi' -Transform 'Settings.mst' -Parameters '/q /norestart' -SkipMSIAlreadyInstalledCheck
使用这个命令。如果您使用 Powershell 进行安装。
这将跳过 MSI 文件检查。
【讨论】: