卸载时 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,并且错误可能位于执行序列中的某个位置。

任何帮助将不胜感激。

问候

卸载时 WIX 自定义操作失败

记录安装并查看自定义操作中是否存在堆栈转储。

顺便说一句,这里有一些代码气味。 您的"寄存器程序集"究竟做了什么? 你可能正在重新发明轮子。 自定义操作计划为立即执行(其中一个在 InstallFinalize 之后的安装事务之外执行),没有任何回滚或提交功能,并且安装程序不会在 UAC 环境中提升。