Service Wix:可以在InstallValidate之前执行自定义操作吗?
卸载过程中,安装程序将显示以下消息:Service Wix:可以在InstallValidate之前执行自定义操作吗?,service,wix,custom-action,Service,Wix,Custom Action,卸载过程中,安装程序将显示以下消息: "The setup must update files or services that cannot be updated while the system is running. If you choose to continue, a reboot will be required to complete the setup." 我认为这是因为卸载时安装的服务仍在运行。因此,我尝试编写一个自定义操作来阻止它。但是,这似乎不起作用 如果我将操作设置为
"The setup must update files or services that cannot be updated while the system is running. If you choose to continue, a reboot will be required to complete the setup."
我认为这是因为卸载时安装的服务仍在运行。因此,我尝试编写一个自定义操作来阻止它。但是,这似乎不起作用
如果我将操作设置为Execute='deferred'Impersonate='no'
,它只允许我将操作置于InstallInitialize
和InstallFinalize
之间,因此我必须将其设置为“immediate”
REMOVE=“全部”
还请注意,由于某些原因,我必须使用自定义操作手动安装服务,而不是使用Wix。这就是我试图手动删除它的原因。在安装初始化之前,无法运行提升的自定义操作。如果您要正常安装该服务,MSI将负责为您停止该服务,并且不会显示“正在使用”消息。您应该在安装完成后调用自定义操作。然后在您的自定义操作之后,您可以调用WIX操作来安装服务。谢谢您的建议,但该服务是通过自定义操作安装的。我关心的是如何在卸载过程中抑制上面的消息。@jcha,可能是在卸载产品之前,可以从bootstraper运行一个特殊的可执行文件来停止服务。我也有同样的问题。对于类似的情况,我使用了一个自定义操作来卸载服务,方法是在=“RemoveFiles”之前运行自定义操作。我确定这是否适用于所有场景。谢谢你的信息,但我仍然不清楚。因为如果我将自定义操作放在
InstallInitialize
之后,它将在卸载InstallValidate
步骤期间抛出消息“安装程序必须更新无法更新的文件或服务…”。无法运行提升的自定义操作来阻止使用文件消息。如果您使用内置服务功能,MSI将不会显示正在使用的消息,因为它知道它将停止并删除服务。@BobArnson,这不太正确。。。我在WIX3.10.3中遇到了这个问题。Wix正在管理服务,但在升级时,在验证步骤中仍会抛出该消息。如果其他程序在不同位置使用同名文件,则还会显示“正在使用文件”对话框。在我的例子中,它是来自C运行时的文件,该运行时用于大量文件。
<CustomAction BinaryKey='CustomActions' Id='StopService' DllEntry='StopService' Execute='immediate' />
<Custom Action="StopService" Before="InstallValidate">REMOVE="ALL"</Custom>