如何替换MSI的卸载部分

Cil*_*vic 1 windows-installer uninstall msiexec

我已经使用VS2010安装项目构建了一个msi安装程序。

现在,由于自定义操作中出现“ 1001异常:参数machineName的格式无效”(请参见下文),因此该项目没有卸载。

我无法使用从系统控件或中的删除来卸载应用程序msiexec /uninstall

有办法强制卸载吗?

细节:

作为自定义操作的一部分,我注册了一个自定义事件源,我的应用将其用于事件记录到Windows日志中:

public override void Install(IDictionary stateSaver) {  
        base.Install(stateSaver);  
        EventLog.CreateEventSource("VeodinRecorder","Application");  
}  
Run Code Online (Sandbox Code Playgroud)

在“卸载”内部,我尝试使用

if (!EventLog.SourceExists("VeodinRecorder"))  
   EventLog.Delete("VeodinRecorder"); `
Run Code Online (Sandbox Code Playgroud)

EventLog.Delete也将计算机名作为第二个参数,因此我尝试覆盖用于卸载的msi msiexec /fv并更改了卸载操作:

   EventLog.Delete("VeodinRecorder","."); 
   EventLog.Delete("VeodinRecorder","Application"); 
Run Code Online (Sandbox Code Playgroud)

我什至将整个“卸载操作”留为空白。

但是似乎没有任何效果。

有什么提示吗?

完整日志:

错误1001。错误1001。卸载时发生异常。该异常将被忽略,卸载将继续。但是,卸载完成后,该应用程序可能未完全卸载。->参数machineName的格式无效。MSI(s)(60!68)[22:49:00:101]:
调试:错误2769:自定义操作_3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall没有关闭1个MSIHANDLE。
安装程序在安装此软件包时遇到意外错误。这可能表明此程序包有问题。错误代码为2769。自变量为:_3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall,1,CustomAction _3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall返回的实际错误代码为1603(注意,如果不是100%,则为内部错误)
动作于22:49:00结束:InstallExecute。返回值3。
操作在22:49:00结束:安装。返回值3。

Cil*_*vic 5

当我使用来更新安装时,CustomAction.dll似乎没有更新msiexec /fv

现在,我将新构建的CustomAction.dll(带有空的卸载覆盖)手动放入安装文件夹中,并且能够卸载。

更新:(贷方@pcans)使用ORCA编辑当前安装的msi并手动禁用卸载自定义操作。

  • 确实在这里非常有用的答案。但是我改为使用ORCA编辑当前安装的msi,并手动禁用了卸载自定义操作。 (2认同)