C# 卸载时的WIX自定义操作失败
我是WIX的新手,请容忍我 我在安装过程中有两个自定义操作,一个在安装.msi期间调用,另一个在卸载.msi期间调用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
<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
}