65.9K
CodeProject 正在变化。 阅读更多。
Home

卸载任何 .NET 应用程序的卸载程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.05/5 (7投票s)

2007年6月20日

CPOL

3分钟阅读

viewsIcon

63416

downloadIcon

1528

创建一个卸载程序来卸载任何已安装的 .NET 应用程序

引言

我将此实用程序命名为卸载程序,因为此实用程序可用于卸载任何使用 .NET 部署向导 [Windows Installer] 部署的 .NET 应用程序。

背景

我厌倦了从“添加/删除”程序中卸载 .NET 应用程序。 我想要类似于标准卸载程序的东西,这样您只需双击它就会卸载您的应用程序。

您可以使用 Orca 创建您的卸载程序,Orca 是一个用于更新您的 MSI 的实用程序,但这并不是一项简单的任务。 它非常复杂,并且每次构建设置时,您都必须一次又一次地做同样的事情。

所以,我在这里帮助那些不知道如何为他们的 .NET 应用程序创建标准卸载程序的人。

Using the Code

要使用此实用程序,您首先必须在 .NET 中创建一个设置项目。 在设置项目中添加您的应用程序的主要输出后,构建设置项目。

现在,在文件系统的任何位置创建一个名为 uninstall.bat 的批处理文件。 在批处理文件中,编写以下语句

@ECHO OFF 

这将设置隐藏的命令。

如果在设置安装路径中,您的应用程序在运行时创建任何目录,则在 uninstall.bat 文件中添加以下行以删除目录内容。

DEL DirectoryName /q

添加一个命令来清除您的命令提示符屏幕,以便没有人可以知道您的实用程序在幕后做什么。

CLS

然后要删除目录本身,您将不得不添加下面给出的一行

RMDIR DirectoryName

如果您的应用程序在运行时创建任何文件,您也需要在卸载时清除这些文件。 为了实现这一点,您可以添加下面给出的行

DEL FielName<.txt|.xml>

这将删除指定的文件。

现在是卸载应用程序的主要命令,所以我希望您已经理解了上面指定的命令,如果没有,请先理解这些命令。

现在,下面给出的命令将删除由安装程序创建的所有文件,并从系统中删除该应用程序。

C:\WINDOWS\system32\MsiExec.exe /Uninstall {455EAB09-DEC0-4EBF-8B4D-130004A7537D} 
/qr /li <LogFileName.txt>

C:\WINDOWS\system32\MsiExec.exe = MsiExec.exe 文件的路径存在于 System 文件夹中,确保它存在于目标机器上或相应地更改路径。

/Uninstall = 这是一个告诉 MsiExec.exe 您正在执行卸载的命令。

{455EAB09-DEC0-4EBF-8B4D-130004A7537D} = 这是该实用程序最重要的部分,这是您的应用程序的产品代码。
您可以从您的应用程序设置项目的属性窗口中获取此产品代码
您的设置项目。 [在解决方案资源管理器中选择项目节点,然后单击 F4 并复制产品代码。]

如果您在设置项目中更改应用程序的版本,则产品代码也会更改,因此,只要您更改版本,只需复制新的产品代码并将其替换到 uninstall.bat 文件中即可。

/qr = 这是一个告诉 MsiExec.exe 您将以 GUI 模式执行卸载的命令,但 GUI 较少,这意味着它不会要求您修复您的应用程序。

有多种组合来实现不同的卸载模式,例如

qn = No UI.
qb = Basic UI 
qf = Full UI [default] (It will ask you to either repair or uninstall your application. )

quiet = Quiet mode, no user interaction
passive = Unattended mode - progress bar only

现在,如果您想为您的应用程序卸载创建日志,请添加另一个命令
下面给出

/li <Log File Name e.g. MyAppLog.txt>

这将创建一个名为 MyAppLog.txt 的日志文件。

现在卸载完成。

现在您必须将此批处理文件包含在您的设置项目中,该项目将您的主要输出,并且您可以创建此批处理文件的快捷方式并将其放在程序菜单中(如果您为您的应用程序创建快捷方式)。

因此,当安装程序安装后,它会将 uninstall.bat 文件放入应用程序安装根目录中。

关注点

我又一次节省了从添加/删除程序实用程序卸载任何应用程序的时间。

欢迎任何类型的建议,如果您有任何疑问或问题,请联系我。

享受吧。

请访问我的网站空间以获取更多文章,网址为 http://www.naq.web1000.com

谢谢。

© . All rights reserved.