日期:2014-05-19  浏览次数:21149 次

C#制作安装包卸载时删除注册表中的项
我的程序在运行时会对注册表进行修改,用.net制作的安装包如何去删除这些注册表项呢?是不是可以在工程项目中添加脚本文件,不过我不会用VB写删除与本程序相关的注册表项。请大虾指点下。

------解决方案--------------------
你重写那个UnInstall(***)方法不就OK了!
示例:
public override void Uninstall(IDictionary savedState)
{
RegistryKey software = Registry.LocalMachine.OpenSubKey( "SOFTWARE ",true);
RegistryKey dir = software.OpenSubKey( "******* ",true);
dir.DeleteSubKey( "***** ");
if(dir.SubKeyCount == 0)
{
dir.Close();
software.DeleteSubKey( "Richisland ",true);
}
software.Close();
}
------解决方案--------------------
很简单的办法,使用InstallShiled就可以。
首先你要确定你要写的注册表位置,如
HKLM\SOFTWARE\YOURCOMPANYNAME\PRODUCTNAME\KEY\...

这是你在开发计算机上就做好了的,把注册表内容在开发计算机上都写好。
然后用IS建立安装包,安装的时候,IS里有一个页面专门用来安装注册表项的。
你只要在这个页里用鼠标把这个注册表托拽到目标栏里就行了。

打包好的文件在客户计算机里安装的时候,将会自动把你定义的注册表项给安装上。IS的安装引擎内部使用的Windows Installer服务,它将自动把你的这个应用程序对系统的修改自动记录到Windows Installer 的内部数据库中。

到时候删除的时候,在控制面板里的添加删除程序选择删除,Windows Installer 就会自动把所有程序文件和注册表项删除。