Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service Wix:可以在InstallValidate之前执行自定义操作吗?_Service_Wix_Custom Action - Fatal编程技术网

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>