方法一: 该打包过程在vs2005中完成,但也适用于vs2008,程序是用c#写的。
1.新建安装和部署。
打开你所写的项目,在解决方案上右键->添加->新建项目。如图:
选择其他项目类型->安装和部署->安装项目。在名称中把名字改为你所希望的名字,然后确定。如图:
2.确定后打开文件系统,然后单击应用程序文件夹,在右边空白处右键->添加->项目输出。如图:
3.选择主输出,然后确定。这时文件系统中的应用程序文件夹如图:
4.在刚添加的主输出上右键,创建其快捷方式。可以重命名也可不重命名。这里命名为PicSee。如图:
5.剪切刚创建的快捷方式,然后单击用户的程序菜单,在其上右键,添加,文件夹,重命名文件夹。这个文件夹名字就是你在开始,所有程序中显示的名字。然后单击刚创建的文件夹,在右边空白处粘贴快捷方式,安装好程序后,这个快捷方式会出现在所有程序中。如图:
6.像上面一样再创建一个快捷方式,剪切,然后单击用户桌面,粘贴。安装完程序后,这个快捷方式出现在桌面。如图:
7.右击左边的"应用程序文件夹"打开属性对话框:
将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉,
不然的话做好的安装程序默认安装目录会是"c:/programm file/你的用户名/安装解决方案名称"。
8.右键你的安装项目名,属性。如图:
在打开的属性页中,选择"系统必备",在打开的系统必备页中,选中如下图中的选择项,选上以后,在生成的安装文件包中包含.netframework组件,然后确定。
9.改变桌面和开始->所有程序中该程序的默认图标。
在应用程序文件夹右边空白处,右键->添加->文件,添加一个ico文件。如图:
打开用户的程序菜单->PicSee,在右边的快捷方式上右键,属性窗口。向其属性中的icon属性添加刚添加的ico图标。
同理,打开用户桌面,在右边的快捷方式上右键,属性窗口。向其属性中的icon属性添加刚添加的ico图标。
10.添加卸载功能。
在应用程序文件夹右边空白处,右键->添加->文件,选择c:/windows/system32文件夹下的msiexec.exe文件。然后重命名为Uninstall.exe。改不改名字都可以。如图:
然后创建快捷方式,剪切到用户的程序菜单->PicSee中。如图:
11.用鼠标左键单击安装项目(下图为PicSee)名,查看其属性,注意不是右键,属性。查看其ProductCode属性。然后复制该属性的值。如图:
12.然后打开你创建的那个卸载快捷方式的属性对话框,在Aguements属性中输入"/x {ProductCode}",本例为/x {D8DB4DCF-B28A-49CB-9840-E36D68FD7EE1}。如图:
13.右键安装项目(PicSee)名,单击生成,即可生成带有卸载功能的安装程序了.
(我第一次按照这方法做的,在桌面出不来快捷方式,还在寻找原因)
方法二:
最近刚用VS2005进行开发,在程序完成,进行打包发布时,突然发现用VS2005打包时出现了一个问题。
先来看看VS2003时的做法:(两种做法皆来源于网络)
VS2003打包時加入卸载功能:
方法一:
1.在打包项目中添加文件msiexec.exe(一般可在c:/windows/system32/下找到)
2.在文件系统视图中选择应用程序文件夾,在msiexec.exe上按右键,选择创建快捷方式,重命名快捷方式为"卸载".
3.更改此快捷方式的Arguments 为"/x {产品id}",产品id的值为打包项目的ProductCode属性值.
方法二:(推荐)
1.先生成安装包,记下ProductCode,下面要用到
2.用VS.net建立一个新的控制台程序uninst.exe文件
'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
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式
在VS2003时,本人一直是用方法一进行打包,但是在VS2005下,用方法一是行不通的。出现问题如图:
程序生成时,会出现如图所示错误。(不知道为什么VS2003中可以,VS2005却不可以,不知哪位大侠可以告知)。
所以VS2005中,只能用第二种方法来添加卸载的功能了。
把方法二中步骤二的代码改写成C#如下:
{
System.Diagnostics.Process.Start("msiexec", "/X{460247B2-5FF0-4AF7-B4BC-B8BA3025231B}");
}
用步骤二,顺利进行打包OK. :)