当 Advanced Installer 尝试安装已安装在 Windows 中的程序时,如何选择默认选项?

How to choose a default option when Advanced Installer try to install a program which has been installed in Windows?

我有一个 "setup.exe" 安装程序,我将 运行 它在自定义 Winform 程序中的无UI(静默)模型中。

在正常的UI模式下,如果安装了同版本的程序,界面会显示3个选项:"modify","repair","remove"。但是我不知道安装程序在静默模式下会做什么,以及如何选择默认选项?

维护操作:我不是 100% 确定你在问什么,但让我们试试。这些选项“modify”、“repair”和“remove" 适用于已安装的产品。它们合起来是“maintenance operations”。

修改是指select安装或卸载安装的哪些功能(字典、SDK、帮助文档等...)。换句话说,您可以添加或删除部分设置 - 在 MSI 中称为功能(请参阅下面的信息和 links)。 Repair 本质上是重新复制最初安装的文件和设置(可以调整确切的行为,它可能只会恢复丢失的文件或者它可能会强制覆盖所有内容)。 删除 将卸载产品。


Features: 所以以上是指您的产品已经安装的情况。然后您可以修复、删除或修改。不过也有原装的,你可以控制在这样的安装过程中安装什么功能。

这是 MSI 的屏幕截图,显示了 select 可用于安装的功能:

要控制静默安装时安装的功能,您可以通过命令行使用 ADDLOCAL 属性(或者您可以设置在转换中):

msiexec.exe /I /L*V "C:\test.log" ADDLOCAL="FeatureName,AnotherFeatureName" /QN

快速参数说明:

/I = run installation sequence
/L*V = "C:\Test.log"= verbose logging
ADDLOCAL="FeatureName,AnotherFeatureName" = Install these features locally 
/QN = run completely silently

有一整套与 ADDLOCAL 相关的属性 - 例如 REMOVE、ADVERTISE、REINSTALL,但大多数时候 ADDLOCAL 足以 select 要安装什么功能。


以上截图来自我在superuser.com上的一个旧回答:Automatically select features for silent MSI install。它包含一些关于功能和静默安装的更充实的解释。

这里还有一个答案,描述了命令行和转换的安装和使用。它相当复杂和过度,但无论如何这里是 link:How to make better use of MSI files(请注意,这个答案在写作时发生了奇怪的转变,所以只有上半部分适用于你的主题 - 后者成为一般对 MSI 问题的奇怪讨论)。

总体问题是 运行再次设置和 MSI 不会做任何有用的事情,所以不清楚你想要实现什么。

如果您想卸载,您不会再运行 MSI,您只需卸载它。

如果您想修复已安装的产品,您不会再运行它了。为什么需要维修?在任何情况下,它都会根据快捷方式的弹性操作进行修复,因此它似乎没有用。

如果要添加带有修改的功能,那么这通常是 运行 在 UI 模式下选择功能。

所以我的一般问题是:您要解决的实际问题是什么?似乎没有任何迹象表明您正在尝试实现什么,并且您正在进行的静默安装基本上除了默认维护模式外什么都不做,可能是修复。