卸载时 WIX 自定义操作失败
本文关键字:操作 失败 自定义 WIX 卸载 | 更新日期: 2023-09-27 17:56:25
我是WIX的新手,所以请耐心等待。
我的安装过程中有两个自定义操作,一个在安装.msi期间调用,另一个在卸载.msi期间调用。
<Binary Id="ClassExtension.RegisterAssemblies.CA.dll" src="..'ClassExtension.RegisterAssemblies'bin'$(var.Configuration)'ClassExtension.RegisterAssemblies.CA.dll" />
<CustomAction Id="CustomActionInstall"
Return="check"
Execute="immediate"
BinaryKey="ClassExtension.RegisterAssemblies.CA.dll"
DllEntry="OnInstall" />
<CustomAction Id="CustomActionUninstall"
Return="check"
Execute="immediate"
BinaryKey="ClassExtension.RegisterAssemblies.CA.dll"
DllEntry="OnUninstall" />
<InstallExecuteSequence>
<Custom Action="CustomActionInstall" After="InstallFinalize" />
<Custom Action='CustomActionUninstall' After="InstallInitialize">REMOVE="ALL"</Custom>
</InstallExecuteSequence>
自定义操作方法如下所示:
[CustomAction]
public static ActionResult OnInstall(Session session)
{
//Code
}
[CustomAction]
public static ActionResult OnUninstall(Session session)
{
//Code
}
自定义操作驻留在单独的 C# 自定义操作类中,安装时调用的自定义操作工作正常。当我尝试卸载应用程序时,出现以下错误:
此 Windows 安装程序包存在问题。需要 DLL 无法运行要完成的此安装。联系您的支持 人员或包供应商。
因此,在我看来,在初始化之前正在调用某个 DLL,并且错误可能位于执行序列中的某个位置。
任何帮助将不胜感激。
问候
记录安装并查看自定义操作中是否存在堆栈转储。
顺便说一句,这里有一些代码气味。 您的"寄存器程序集"究竟做了什么? 你可能正在重新发明轮子。 自定义操作计划为立即执行(其中一个在 InstallFinalize 之后的安装事务之外执行),没有任何回滚或提交功能,并且安装程序不会在 UAC 环境中提升。