VS2005 制作安装程序
2007年08月05日 星期日 上午 11:32
1.首先得有一需打包的项目,这里我就用以前的学习之笔:
2.0 接下来就要新增 安装工程(专案) :
2.1 专案生成后,界面如下:
2.2 接下来当然是要添加需打包的项目了:
说明: 1.专案输出: 打包最核心内容, exe执行文件和配置文件之类…
&nb sp; 2.档案: 一些辅助文件,说明书什么的,和程序运行没必然关系的文件.
3.合并模组: 一些辅助模块,比如水晶报表…
4.组件: 程序运行需用到的其他组件(非要打包专案生成)
2.3 这里为简单,需打包专案不包括其他 : 档案,模组,组件. 只需 专案输出
最小化打包,只需上图选项中Select部分.此时VS2005界面如下:
2.4 VS2005左侧选项如图:
说明:1.标识一为打包后安装程序在桌面生成的文件的选择
2.标识二为Windows 开始 菜单 生成文件的选择
3.标识三为程序的安装目录下生成文件的选择
2.5 上三文件夹的右键菜单功能一下,展示如下:
a.这里先在 安装目录下 添加一些辅助项目
一个文件夹,用于一些图片的存放 一个 档案 ,msiexec.exe.主要是为卸载用.路径为:C:\\WINDOWS\\system32\\msiexec.exe 创建两个主要输出 的快捷方式 ,也就是执行文件(.EXE)的快捷方式.右击 主要输出 ,点击第一功能选项生成.改为自己想要的名称,这里为 PKGModelControl.这两个快捷方式是为了桌面和 开始菜单 生成的. 创建一个 msiexec.exe 的快捷方式,此快捷方式是为了 开始菜单 生成,用于卸载.
b.接下来在 程序功能表 添加辅助项目
一个文件夹,存在一些程序需在开始菜单打开文件的快捷方式.这里为文件名也为:PKGModelControl 从a 中 拖入一 主要输出 和 msiexec.exe 的快捷方式,改为自己喜好的名称.
c.然后在 桌面 添加辅助项目
从a 中 拖入一 主要输出的快捷方式,改为自己喜好的名称.
d.对快捷方式 设置图片,快捷方式的 Icon.这个就自己设置了哦..!!
到这里,工作基本已经完成.可还有一项重要工作不能给忘记:
msiexec.exe 快捷方式 的Arguments属性值一定不能忘设 /x + ProductCode
其中 ProductCode 为打包专案的 ProductCode 属性. 重要:/x 和ProductCode之间不能有空格
以上一个标准的打包专案已经完成,但是,如果需要安装此程序的电脑,没有Dot Net环境怎么办呢,能不能把环境集成到安装包呢?答案是肯定的. 打开 打包专案 的 属性页面(右击打包专案…):
点击 必要条件 ,
一为需要同时打包的元件 二为元件的位置
然后 建置 专案.一切OK….
本文也只是简单介绍了打包的最简单实现… ,要想自定义安装的复杂功能如 注册表,安装界面,就要见
如果还要进一步自定义的话,那手动编码就OK了,当然要求比较高些.呵呵!!!!!!!
关于卸载:
我已經從MSDN中找到解藥了!
http://msdn2.microsoft.com/zh-tw/library/y63fxdw6(VS.80).aspx
http://msdn2.microsoft.com/zh-tw/library/465253cd(VS.80).aspx
http://msdn2.microsoft.com/zh-tw/library/aafz9hx4(VS.80).aspx
其實它是會比較Upgrade co
所以只要變更版本則product co
,所以當重新安裝時會自動偵測並移除舊版本!
這樣就可在避免使用者進入到內部來修改或移除設定.
右击左边的”应用程序文件夹”打开属性对话框,将属性中的”defaultlocation“的路径中的”[manufacturer]”去掉,
不然的话做好的安装程序默认安装目录会是”c:programm file你的用户名安装解决方案名称”;
关于卸载
关方法一:
1.在打包項目中添加文件msiexec.exe(一般可在c:windowssystem32下找到)
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為”卸载”.
3.更改此快捷方式的Arguments 为”/x {產品id}”,產品id的值為打包項目的ProductCode屬性值.
方法二:(推荐)
1.先生成安装包,记下ProductCode,下面要用到
2.用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
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式
在VS2003时,本人一直是用方法一进行打包,但是在VS2005下,用方法一是行不通的。出现问题如下:
警告 1 应将“msiexec.exe”排除,原因是其源文件“C:WINDOWSsystem32msiexec.exe”受到“Windows 系统文件保护”。
把方法二中步骤二的代码改写成C#如下:
static void Main(string[] args)
{
System.Diagnostics.Process.Start(“msiexec”, “/X{460247B2-5FF0-4AF7-B4BC-B8BA3025231B}”);
}
顺利进行打包OK. 🙂
关于隐藏控制台应用程序窗口
using System;
using System.Runtime.InteropServices;
using System.Threading;
class TestClass
{
static void Main(string[] args)
{
new TestClass();
}
[DllImp
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImp
private static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImp
private static extern int SendMessage(IntPtr hWnd,int Msg, IntPtr wParam, string lParam);
[DllImp
private static extern bool ShowWindow(IntPtr hWnd, int type);
public TestClass()
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = “NOTEPAD.EXE”;//打开一个记事本程序
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.Close();
Console.Title = “1111”;
IntPtr ParenthWnd = new IntPtr(0);
IntPtr et = new IntPtr(0);
ParenthWnd = FindWindow(null, “1111”);
if (!ParenthWnd.Equals(IntPtr.Zero))
Console.WriteLine(“show”);
else
Console.WriteLine(“error”);
ShowWindow(ParenthWnd, 0);//隐藏本dos窗体
Console.Read();
}
}
部署在.Net 平台下开发的应用程序,需要安装安装对应版本的.Net Framwork,而Vsual Studio 2003并没有提供一起打包的功能,所以这一点估计大多开发者都感觉不是太好,那如何将.Net Framework安装部署到客户机上呢?
其实微软提供了我们一个安装引导插件(Microsoft Visual Studio .NET 2003 引导程序插件),可以帮助我们在打包时,它会自动将.Net Framework打包放入你的安装程序中,完成了我们想要的功能。
建立安装程序项目,将自己需要打包的程序加入进去,编译过后,你会注意到在生成的安装目录下,你将会注意到多了几个文件(dotnetfx.exe、Config.ini、langpack.exe、Settings.ini),详细介绍如下:
Config.ini — 安装配置文件
dotnetfx.exe — .Net Framework组件
langpack.exe — 语言包
Settings — 设置文件
ItemSoft.msi — .msi安装文件
Setup.exe — 主安装程序
Config的文件内容如下:
[config.ini]
IDS_NOT_SINGLE_INSTANCE=已有另一版本的安装程序正在运行。 该应用程序一次只能运行一个版本。
IDS_DIALOG_CAPTION=%s 安装
IDS_SINGLE_INSTANCE_FAIL=CreateMutex 无法对单个的实例检查分配句柄。
IDS_SETUP_FAILURE=%s 安装失败。如果问题继续存在,请与产品支持人员联系。
IDS_DEFAULT_PRODUCTNAME=应用程序
IDS_SETTINGS_INIT_FAILURE=安装设置文件’%s’在解析时出错,或者无法定位该文件。
IDS_CREATE_PROCESS_FAILURE=下列命令行的 CreateProcess 操作失败: %s 。
IDS_INSUFFICIENT_PRIVILEGES=运行 %s 安装程序要求具有本地系统管理员的权限。安装程序现在退出。
IDS_DIALOG_TEXT=单击”确定”开始安装 %1 。单击”取消”退出安装。
IDS_ERROR_CAPTION=%s 安装错误
IDS_VERSION_DETECT_FAILED=%1 的版本检测失败。请确保安装程序存在于指定位置。%n%n返回消息: %2
IDS_MSI_NOT_FOUND=无法定位产品安装程序’%s’。安装程序现在退出。
IDS_REBOOT_QUERY=安装完成。现在重启吗?
IDS_SETUP_SUCCEEDED=安装成功。
IDS_INVALID_LANGID_CAPTION=无效的语言包代码
IDS_FX_NOT_FOUND=无法定位 .NET framework exe 文件’%s’。安装程序现在退出。
IDS_INVALID_LANGID_MESSAGE=语言包代码 %s 无效。跳过…
IDS_LANGPACK_NOT_FOUND=无法定位语言包 %s。安装程序现在退出。
IDS_MDAC_NOT_FOUND=无法定位 MDAC exe 文件’%s’。安装程序现在退出。
IDS_FILE_NOT_FOUND=无法定位’%1’。安装程序现在退出。
Settings.ini文件内容如下:
[Bootstrap]
MsiPath=ItemSoft.msi — .msi安装文件
ProductName=中国亿万电器成套报价系统 –安装产品名称
MdacVersion=2.71
BootstrapFx=true
FxInstallerPath=
LanguageID=2052
BootstrapLangPack=true
LangPackInstallerPath=
BootstrapMdac=true
MdacInstallerPath=
这种方法能够很简单的将.Net Framwork与你的应用程序一起打包到安装程序中,并且自动检测客机上的是否安装过.Net Framework,然后运行安装。相信大家一定能够喜欢这个插件。
VS2005项目的安装与布署,包括卸载
VS20052008-09-08 17:43:14阅读819评论0 字号:大中小 订阅
一、VS2005制作安装包的“系统必备”选项
“系统必备”,通过该选项,可以选择部署应用程序需要预先安装的组建,包括。net fx和MDAC等。
“系统必备”选项中可以不仅可以选择需要预安装的组件,而且提供了“安装源”的自由选择。
打开系统项目属性,选择发布->系统必备,如下图:
在系统中我们把dotnet2.0框架打包到项目布署中,当安装软件的用户当前没有dotnet2.0框架时将自动进行dotnet2.0框架的安装,
安装完框架后才继续软件系统的安装。
二、制作安装布署程序的步骤
1、新建项目,选择安装布署项目。
2、选择解决方案资源管理器的项目,右键点击,选择属性。
3、在弹出窗口中选择系统必备。
4、将MDAC、.net框架、水晶报表框架、windows installer2.0、windows installer3.0都选中根据需要选择其它项,在我们的项目中只需要了MDAC、.net框架。
5、选择上面的“创建用于安装系统必备组件的安装程序”。这样就会在启动安装程序时自动启动组件的安装程序。
6、选择下面的“从与我的应用程序相同的位置下载系统必备组件”,确定。这样就自动将所需要的组件以文件夹的形式包含在安装程序的目录中了。
7、在目标计算机上的文件系统窗口中,设计、添加程序文件,系统将自动检测程序所依赖的文件,并自动添加进安装文件。
8、在应用程序文件夹中选择执行程序文件,右键点击,选择“创建快捷方式”。
9、将创建的快捷方式拖入“用户的‘程序’菜单”和“用户桌面”(可以重命名快捷方式)。
10、生成,OK。
11、其它如安装目录、文件名等设置可选择项目名,在文件安装属性中分别进行设置。
三、项目打包详解
一).创建部署项目
1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。
2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“
名称”框中键入 setup1。
3. 单击“确定”关闭对话框。
4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。
5. 在“属性”窗口中,选择 ProductName 属性,并键入旭友出租房管理系统
。如下图所示:
二).将主程序项目的输出添加到部署项目中
1. 在“文件系统编辑器”中,选择“应用程序文件夹”。新建一个文件夹1.0.0.0,单击文件夹1.0.0.0,在“操作”菜单上,指向
“添加”,然后选择“项目输出”。
2. 在“添加项目输出组”对话框中,选择“项目”下拉列表中的“你的项目(houselease)”。
3. 从列表中选择“主输出”组,然后单击“确定”。
如下图:
1.在打包项目中添加文件msiexec.exe(一般可在c:windowssystem32下找到)
2.在文件系统视力中选择应用程序文件夹,在msiexec.exe上按右键,选择创建建快捷方式,重命名快捷方式为”卸载旭友出租房管理系
统”。
3.更改此快捷方式的Arguments属性
为”/x {产品id}”,产品id的值为该布署项目的ProductCode属性值,直接copy就OK。
四).打包时加入安装卸载时的配置项目文件(即创建自定义操作)
1. 在打包项目中,在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。
2. 在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。
在“选择项目中的项”对话框中,双击“应用程序文件夹”。
选择“主输出来自SetupProcessor(活动)”项,然后单击“确定”关闭对话框。
3.
在自定义操作编辑器中选择“卸载”节点。在“操作”菜单上,选择“添加自定义操作”。
在“选择项目中的项”对话框中,双击“应用程序文件夹”。
选择“主输出来自SetupProcessor(活动)”项,然后单击“确定”关闭对话框。
注:在安装与卸载的节点都选择“主输出来自SetupProcessor(活动)”是因为我们把安装与卸载的配置文件都写在该项目中了。