使用c#以编程方式卸载程序

时间:2011-06-23 06:28:18

标签: c# uninstall

早些时候我们发布了一个应用程序。后来发布了一个新版本的应用程序,但具有不同的应用程序名称。但是这两个应用程序都将文件放在同一程序文件夹中。但是我们在卸载程序中列出了两个不同的版本。

现在我们想发布一个更新的版本。我们想从用户的电脑上卸载第一个版本。我怎样才能用c#实现这个目标。我们正在使用Windows 7 64位(应用程序是32位并安装在x86文件夹中)。

我没有应用程序设置既没有应用程序密钥

请帮帮我。

3 个答案:

答案 0 :(得分:1)

如果您有安装程序项目,可以在安装程序属性中指定。

请参阅:VS2008 Setup Project: Uninstalling the previous MSI

答案 1 :(得分:1)

如果您的应用程序无法检测到它的早期版本(不同名称),那么您可能应该从这两个应用程序干扰的地方删除数据。您可以使用File.Delete();执行此操作,但如果这些文件位于Application没有权限的位置,则应强制它通过添加清单文件以管理员身份运行并替换该行。

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

答案 2 :(得分:0)

查看COM WindowsInstaller类。您需要添加对WindowsInstaller类的引用才能访问它。从这里,您可以浏览MSI并根据需要对其执行操作。我在我的后期构建中使用它来修改存档以修复Visual Studio的未记录的功能。

// Create an Installer instance   
MsiInstaller = Activator.CreateInstance(Type.GetTypeFromProgID("WindowsInstaller.Installer")) as WindowsInstaller.Installer;
// Open the msi file for Read/Write   
MsiDatabase = MsiInstaller.OpenDatabase(MsiFile.FullName, MsiOpenDatabaseMode.msiOpenDatabaseModeTransact);