转:用 vs.net做安装卸载程序

安装程序在vs.net是自带的,尤其是在.net2005中,非常方便,界面也比2003美观了许多。但是仍然存在的不方便的地方就是没有自带卸载程序,如果要求安装的人都从控制面板中去卸载,也太费劲了,所以今天上网找了找例子,发现了一些,所以一一记述下来。

方法一:利用msiexec.exe文件(一般在\winnt\system32目录下)。将该文件集成到安装文件目录中,然后选择安装项目的工程属性,找到Product Code一览,比如ProductCode {5284694C-24C1-4FCF-A705-D4B9A0081274},将这个{5284694C-24C1-4FCF-A705-D4B9A0081274}copy下来,然后在开始菜单中建立msiexec.exe的快捷方式,起个名字叫卸载,然后选择属性,在Argumengs一览中填写/x空格,然后把那个copy下来的ProductCode 复制到这里,就OK了,然后编译生成安装文件,试着安装一下,卸载程序就在开始菜单中了。用这个的好处呢就是方便,但是由于copy了一个和操作系统相关的msiexec.exe文件,所以仍然是不太合适。
方法二:1、先部署程序,记下程序的ProductCode 的值 ,例如:50026DC8-69DC-4B92-89CC-3D10AD4CA8C4
(选择解决方案资源管理器根目录如setup,再查看属性标签,不是右键中的属性)
2、建立1个新的winFrom程序
3、删除自动生成的form1。
4、添加个类,写入下面代码
using System;

namespace uninst
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class UnInstall
{
[STAThread]
static void Main(string[] args)
{
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} /qr");
//{50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} 就是上诉的ProductCode
}
}
}
5、生成新的控制台程序
6、再把这个新的卸载程序添加到你的安装包里就行了。

方法三:1.用VS.net建立一个新的控制台程序uninst.exe文件,
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
2.将控制台程序BIN目录的exe文件加入到打包程序文件中
3.在程序组创建uninst.exe的快捷方式

以上就是我在网上找的例子,个人比较推荐的还是后两种,启示后两种一样,就是自己单做一个卸载程序,总比拿着微软的msiexec.exe满大街跑要好的多……嗯,好了,有需要的同志可以看看,希望微软可以在做安装程序的同时,帮我把卸载程序也做了……:(。hoho,人么,总是希望懒一些而多得一些东西的。

打包的具体操作步骤:

1)新建“安装和部署项目”-->“安装向导”

2)选择菜单中 项目-->添加-->文件(这里选“创建用于windows应用程序.exe”)-->打开

3)一般会自动将依赖项添加到“检测到的依赖项”,如果没有,那么我们要手动将其加入4)
Crystal_Managed2003.msm (如果有水晶报表)
dotnetfxredist_x86.msm (.net一定是必须的)
... (如果有引用其他的dll)

4)手动加入要包含的文件:项目-->添加-->合并模块(添加你的程序文件) (包括dotNetFramework和MDAC27)
位于:C:\Program Files\Common Files\Merge Modules\ 下

具体功能如下:
(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
* Crystal_Managed2003.msm、
Crystal_Managed2003_chs.msm、

(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
* Crystal_Database_access2003.msm、
Crystal_Database_access2003_chs.msm、

(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,注意是添加合并模块,否则没有“MergeMouduleProperties”属性)
* Crystal_regwiz2003.msm、

(是vc的运行库,估计是Crystal Report或涉及到的某些程序是用vc写的,所以需要它!))
VC_User_CRT71_RTL_X86_---.msm、
VC_User_STL71_RTL_X86_---.msm、

5)打开解决方案-->右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)

6)生成解决方案(或直接按Ctrl Shift B)

至此整个分发程序已经做好,再把刚才做的那个安装程序双击一下……

-----------------------------------------------------------------------
打包時加入卸载功能:

方法一:
1.在打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸载".
3.更改此快捷方式的Arguments 为"/x {產品id}",產品id的值為打包項目的ProductCode屬性值.

方法二:(推荐)
1.用VS.net建立一个新的控制台程序uninst.exe文件,
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
2.将控制台程序BIN目录的exe文件加入到打包程序文件中
3.在程序组创建uninst.exe的快捷方式

Vs.net中部置应用程序卸载- -

      相信很多人都做过安装程序,目前最大功能最全的当属InstallShield,但是InstallShield的语法学习起来实在费劲,相对而言vs.net自带的安装部署短小精悍,且使用C#语法,对于一般C#开发者来说使用起来就极为简便,在对其作了一些研究之后,发现vs.net的安装部署项目的功能也已经非常好用,一般的程序安装都可以轻松实现,当然,在研究的过程中也发现了一些缺陷,最主要一个问题是安装后卸载不方便,一定要去控制面板里。可以按如下的方法解决,在程序里添加一个卸载的快捷方式。

1.新建一C# Windows From项目,完成项目的工作

2.菜单-》文件-》添加项目-》新建项-》安装部署项目-》安装向导

选择上面那个项目的主输出。

在安装项目的属性栏中会显示出"XXX部署项目属性",在第一个AddRemoveProgramsIcon属性后"浏览"到你的ICO图标,接着在下面Author输入作者名,也就是你的名字,其他Localization是语言属性,Manufacturer,ProductName的属性将是用户在安装时默认设置的文件夹路径一部分了,设置Title为你的应用程序标题名称。

3.右击"安装项目"上,选择文件系统视图

在应用程序文件夹,添加一个文件,如果是WIN98下的安装,请选择WIN98操作系统目录下的msiexec.exe文件(一般在c:\windows\system目录下);如果是其他,比如WIN2K系列,请选择该操作系统目录下的msiexec.exe文件(一般在\winnt\system32目录下)。

4.在文件系统视图的"用户程序菜单"里,添加一个目录,命名为项目的名字,

并且,在这个目录里,添加一个快捷方式,指向项目的主输出,

再添加一个快捷方式,指向加入的文件Msiexec.exe,命名为:"卸载",

5.在解决方案里,选择安装项目,再打开属性视图,打开安装项目的属性面板,里面有一项:

ProductCode  {5284694C-24C1-4FCF-A705-D4B9A0081274}

把后面的{5284694C-24C1-4FCF-A705-D4B9A0081274},复制一下。

6.在"卸载"快捷方式的属性里,有一个叫Arguments的属性栏,在属性栏中首先填入"/x"后加一个空格,再"粘贴",将ProductCode的属性值COPY至此。

7、再在VS.Net的顶部菜单栏中"生成"-"生成 XXXX"(XXXX为你的项目名称)

8、从微软网站上http://www.microsoft.com/downloads/直接下载Microsoft® .NET Framework 1.1 版可再发行组件包(dotnetfx.exe文件),COPY到您的发布生成的目录中,再放上你的安装说明及提示文件等。安装说明中提示用户首先安装dotnetfx.exe,再点击你的应用程序进行运行即可。

转载于:https://www.cnblogs.com/sqshine/archive/2009/05/19/1460104.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值