Visual studio 2010 如何删除在卸载过程中引发异常的安装?

Visual studio 2010 如何删除在卸载过程中引发异常的安装?,visual-studio-2010,deployment,installation,Visual Studio 2010,Deployment,Installation,我有一个安装项目,它使用System.Configuration.Install.Installer类来处理一些自定义操作。我在Uninstall方法中的逻辑是抛出一个异常(确切地说是null引用异常),该异常导致卸载退出,而不实际卸载任何内容 我知道问题的原因,并在卸载方法中更改了代码,但这并不重要,因为如果我尝试通过控制面板卸载程序,它将不会有我所做的更改,因此它将继续例外,如果我尝试通过VS2010中安装项目的上下文菜单卸载,它似乎不使用重建的安装项目,并且执行与尝试通过控制面板卸载相同的

我有一个安装项目,它使用
System.Configuration.Install.Installer
类来处理一些自定义操作。我在
Uninstall
方法中的逻辑是抛出一个异常(确切地说是null引用异常),该异常导致卸载退出,而不实际卸载任何内容

我知道问题的原因,并在
卸载
方法中更改了代码,但这并不重要,因为如果我尝试通过控制面板卸载程序,它将不会有我所做的更改,因此它将继续例外,如果我尝试通过VS2010中安装项目的上下文菜单卸载,它似乎不使用重建的安装项目,并且执行与尝试通过控制面板卸载相同的操作


我觉得我被夹在岩石和坚硬的地方之间。是否有其他人陷入这种情况,如果是,您如何避免这种情况?

您可以尝试使用此命令(使用实际MSI路径)重新设置固定MSI:

msiexec.exe/fv
您也可以尝试从Windows SDK使用MsiZap.exe:

完美地回答了我的问题

基本上,我只是重新编译了System.Configuration.Install.Installer dll文件,在
Uninstall
方法中没有任何逻辑。手动将位于程序安装位置的dll替换为新编译的dll,然后再次尝试卸载程序。卸载程序将使用新的dll文件,并且不会引发异常(因为我从该方法中删除了所有代码)

然后我就可以修复我的代码并制作一个新的安装程序


作为以防万一,我将所有卸载逻辑放入
try
块,并捕获
异常,您可能会认为这是不好的,但至少它可以防止我对方法所做的任何更改破坏卸载过程(对我来说,这只是意味着某些配置文件可能会被遗留下来,无法正确清理).

只回答我自己的问题是为了那些想知道问题解决方案的人。
msiexec.exe /fv <path_to_new_msi>