我在 Installshield 中开发了一个基本的 MSI 包。为了让它静默安装,我只在构建时包含了 MSI 命令行参数“/qb+”。这将按预期静默安装。
但是,当我再次执行相同的 EXE 以卸载以前安装的组件时,它实际上执行的是重新安装或修复,而不是卸载。我想启动相同的 EXE 进行安装,然后进行卸载。是否可以?
问候,
阿比吉特
我在 Installshield 中开发了一个基本的 MSI 包。为了让它静默安装,我只在构建时包含了 MSI 命令行参数“/qb+”。这将按预期静默安装。
但是,当我再次执行相同的 EXE 以卸载以前安装的组件时,它实际上执行的是重新安装或修复,而不是卸载。我想启动相同的 EXE 进行安装,然后进行卸载。是否可以?
问候,
阿比吉特
发生这种情况是因为默认情况下对已安装的软件包执行维护,而默认维护什么也不做。您可能可以使用类似于如何让 msiexec 根据需要安装和/或重新安装的方法来破解此问题,但不要使用重新安装,而是尝试设置 REMOVE 并在UILevel > 3 或未安装时清除它。
目前尚不清楚这是用于测试目的还是用于公开发布的 EXE。如果它是为了公开发布,我不会根据“最小惊讶原则”改变它的一般工作方式。换句话说,用户应该知道会发生什么。
我通常避免使用 setup.exe 启动器,而倾向于使用单个压缩的 MSI 文件。它将更快地安装和卸载,因为它不会运行 setup.exe 的所有启动逻辑(检查任何先决条件,检查 Installshield 引擎,未知的 Installshield 东西 - 上帝知道他们在所有缓慢的情况下都在做什么),并且它将在资源管理器中为用户提供上下文菜单,然后可以右键单击 MSI 并选择“卸载”以轻松卸载软件包。