我是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#Custom Action类中,在安装时调用的自定义操作可以正常工作。当我尝试卸载应用程序时,出现以下错误:
此Windows Installer程序包存在问题。需要一个DLL 为此安装完成无法运行。联系您的支持 人员或包装供应商。
所以在我看来,一些DLL在被初始化之前被调用,并且错误可能在执行序列中的某处。
任何帮助将不胜感激。
此致
答案 0 :(得分:0)
记录安装并查看自定义操作是否存在堆栈转储。
顺便说一下,这里有一些代码味道。你的“注册程序集”究竟做了什么?你可能正在重新发明轮子。自定义操作计划立即执行(其中一个在InstallFinalize之后的安装事务之外),没有任何回滚或提交功能,并且安装程序不会在UAC环境中提升。