C# 卸载时的WIX自定义操作失败

C# 卸载时的WIX自定义操作失败,c#,wix,C#,Wix,我是WIX的新手,请容忍我 我在安装过程中有两个自定义操作,一个在安装.msi期间调用,另一个在卸载.msi期间调用 <Binary Id="ClassExtension.RegisterAssemblies.CA.dll" src="..\ClassExtension.RegisterAssemblies\bin\$(var.Configuration)\ClassExtension.RegisterAssemblies.CA.dll" /> <CustomActi

我是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>
自定义操作驻留在一个单独的C#自定义操作类中,安装时调用的自定义操作可以正常工作。当我尝试卸载应用程序时,出现以下错误:

此Windows Installer软件包有问题。需要一个DLL 无法运行要完成的安装。联系您的支持人员 人员或包装供应商

因此,在我看来,某些DLL在初始化之前被调用,错误可能在执行序列的某个地方

任何帮助都将不胜感激


注意

记录安装并查看是否有来自自定义操作的堆栈转储


顺便说一句,这里有一些代码的味道。您的“注册程序集”具体做什么?你可能正在重新发明轮子。自定义操作被安排为立即执行(其中一个在InstallFinalize之后的安装事务之外),没有任何回滚或提交功能,并且不会由UAC环境中的安装程序提升

如果这是注册程序集的自定义操作,则wix中有本机方法来执行此操作。我不确定自定义操作到底做了什么,但我只是想提一下。我已将regasm和regsvr32命令替换为本机wix功能。该类的名称可能有误导性,此安装程序对特定软件应用程序使用自定义的assmebly registration进程。它的工作原理与普通的程序集注册不同,因为它是在自定义数据库文件中完成的,而不是在注册表中。我所有的其他问题仍然适用。您还应该记录卸载并查找自定义操作产生的错误。
    [CustomAction]
    public static ActionResult OnInstall(Session session)
    {
      //Code
    }

    [CustomAction]
    public static ActionResult OnUninstall(Session session)
    {
      //Code
    }