vs2008安装部署工程制作教程

来源:互联网 发布:数据库漏洞防范 编辑:程序博客网 时间:2024/05/18 00:46

1.       新建一个 Class Library, 例如 Name 为 CustomAction. 这个就是一个自定义安装行为的类。

create library

2.       添加安装类。在新建的 Library 里面添加一个 Installer Class ,名字我暂时定为 MyInstallerClassDll

  install class

3.       重写基类的函数

    Commit

Install

OnAfterInstall

OnAfterRollback

OnAfterUninstall

OnBeforeInstall

OnBeforeRollback

OnBeforeUninstall

OnCommitted

OnCommitting

Rollback

Uninstall

每个函数对应的是安装过程中的不同时期。

我暂时重写了 Commit 函数,但是还没有自己的实现。

public overridevoid Commit(System.Collections.IDictionary savedState)

   {

         base.Commit(savedState);

}

4.      新建一个setup工程,在Other Project Types里面,并且下拉框选中Add to Solution。我暂时命名为setup. 当然这个前提是你有一个想安装的程序。或者有你想制作安装程序的编译后的文件。

   setup

 

5.      添加源程序文件。

切换Setup工程的视图为File System

   change view

左键点击Application Folder.这个文件夹就是放源程序文件的。User ’ s Desktop 是放桌面快捷方式的,User ’ s Programs Menu 是定义开始菜单的。

application

在右边空白的地方右键选中添加项目输出文件

out

下面下来列表选中你要安装的程序,比如我要安装的是WpfSetup。按住Ctrl键选中Primary output和 Contetn Files,点击OK键。这样就把需要安装的程序的编译后的主要文件都添加进来了。当然也可以手动添加进来如上图选中Add->File然后浏览到你的release或者是debug后的文件夹,然后选中主要文件添加进来。

7

6.      创建快捷方式。在刚刚添加的Primary output from WpfSetup(Active)上面点击右键,选择创建快捷方式,然后重命名。

   8

9

把这个重命名的文件用鼠标左键托到User ’ s Desktop 文件夹里面,这样的话就会在桌面上面生成一个快捷方式,然后再自定义开始菜单的结构,安装通常的做法,我们在User ’ s Programs Menu 文件夹里面新建一个文件夹用于放置我们安装卸载以及帮助手册之类的快捷方式。我定义的文件夹是WPFSample,快捷方式的添加参照User ’ s Desktop 里面快捷方式的添加。

这样的话安装程序的文件结构已经完成了。

7 . 设置系统必备属性。

    在setup工程上面点击右键选择属性。

   10

点击Prerequisites,在弹出的对话框里面选择如下图所示的选项,一定要选择Download prerequisites from the same location as my application. 当然你也可以根据你的SDK选择不不同的版本。如果你选择的是3.5 Sp1。

11

如果在编译的过程中出现了 The install location for prerequisites has not been set to 'component vendor's web site' and the file 'dotNetFx35setup.exe' in item 'Microsoft.Net.Framework.3.5.SP1' cannot be located on disk. 这样的错误你就需要进行如下操作:

1.       打开 [Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\

DotNetFx35SP1 文件夹,在 x64 操作系统上是 %ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1

2.       修改 Product.xml 文件 , 在 <PackageFiles> 节点里面添加下列内容,然后保存。

<PackageFile Name="TOOLS\clwireg.exe" />
<PackageFile Name="TOOLS\clwireg_x64.exe" />
<tPackageFile Name="TOOLS\clwireg_ia64.exe" />

3.       打开这个网址 http://go.microsoft.com/fwlink?LinkID=118080 ,下载 dotNetFx35.exe

4.       打开命令提示符窗口( DOS 窗口),并且进入你下载的 dotNetFx35.exe 的文件夹

5.       执行下面这个命令 dotNetFx35.exe /x: 。注意 /x 后面有个冒号呢。

6.       把解压后的 WCU\dotNetFramework 里面的文件(如下图)拷贝到上面路径提到的 DotNetFx35SP1 文件夹下面

 

如果还有问题

1. 在 Product.xml 找到 <PackageFile Name="dotNetFX30\XPSEPSC-x86-en-US.exe" 然后修改 PublicKey 的值为: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001

2. 找到 <PackageFile Name="dotNetFX30\XPSEPSC-amd64-en-US.exe" 按照上面的步骤修改。

 

12

8. 设置安装程序的属性

在setup工程上面右键点击选择属性。如下图。可以选择需要修改的属性,比如语言,作者和制造商以及安装程序的名字等等。

13

9.Rebuild 这个安装部署工程,然后在debug或者release文件里面找到安装文件,比如我的是WPFSample.msi. 双击就可以运行了。

10. 自定义安装界面

在setup工程上面点击右键选择用户界面视图

  14

打开后如下图,可以看到安装分下面三个部分,Start, Progress, End.我们可以在任意一个部分添加任意一个窗口。有些窗口需要用户输入参数的,这样的话就需要在后台获得这些参数,这样就需要我们开始建立的CustomAction类了。

15

11. 自定义安装行为,选中一个你添加的对话框,比如我选中的是TextBoxes (A),它有四个输入框

我只需要两个所以第三个和第四个的Visible属性都是false. 然后定义第一个和第二个输入框的属性名字,我定义的是NAME和PASSWORD。

16

切换到Customs Actions视图

17

 

在Install和Commit文件上面右键添加上面定义的那个Custom Action.当然这个Primary output已经添加到了Application Folder里面了(添加方法参照上文)。这个也可以就是那个工程的.dll文件。

18

选择Install或者Commit文件里面的CustomAction文件,查看属性

19

在CustomActionData属性里面输入参数名称和值例如/name=[NAME]这个表达式的意思就是定义一个变量名字是name值是前面添加的那个对话框的属性名称并用[]括起来。这样就可以在自定义安装类里面得到了。方法如下:

string name = this.Context.Parameters["name"].ToString();

     string pass = this.Context.Parameters["password"].ToString();

这样就得到了输入框的值。然后在进行一些逻辑操作。也可以抛出一个异常来终止安装过程,并回滚。

     throw new Exception("Invalidate name");

回滚和卸载的程序我们也可以自定义,道理都是一样的。

12. 实现卸载

   找到msiexec.exe这个文件,通常在C:\WINDOWS下面

   添加到Application Folder里面修改名字为Uninstall.exe(也可以不修改)。

   创建快捷方式,移到User ’ s Programs Menu 下面的自定义的那个文件夹下面如WPFSample文件下面

然后打开属性窗口,设置Arguments值为 /x ProductCode 20

这个ProductCode值在Setup工程的属性页可以看到

21

这样就完成了卸载程序了。

来自:http://www.cppblog.com/sleepwom/archive/2009/10/10/98216.aspx

 

VS.NET 2003集成环境插件开发指南(一)----操纵菜单

http://www.cnblogs.com/dragon/archive/2005/03/25/125533.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩脸过敏肿了怎么办 眼角肿了怎么办才能消肿 憋尿导致小腹痛怎么办 蛋蛋撞到了很疼怎么办 睾丸被压了好痛怎么办 睾丸皮肤痒破了怎么办 鸡儿下面了蛋痒怎么办? 射精后小腹胀该怎么办 手压伤了有淤血怎么办 手挤压伤了肿了怎么办 手被挤压肿了怎么办 手砸伤了肿了怎么办 手被机器压伤了怎么办 上眼皮眼睛肿了怎么办 上眼皮内有淤血怎么办 种睫毛眼睛红痛怎么办 一只眼睛变红了怎么办 黑眼球缺了一角怎么办 眼镜度数配高了怎么办 孩子近视800度可怎么办 儿童眼睛近视怎么办才能恢复正常 小孩眼睛近视怎么办才能恢复正常 3岁宝宝近视怎么办啊 6个月婴儿近视怎么办 近视眼的人老了怎么办 一千多度的近视怎么办 近视镜片磨花了怎么办 眼镜镜片磨花了怎么办 戴眼镜鼻梁有印怎么办 狗狗发烧怎么办最有效 狗狗感冒怎么办最有效 狗狗发烧去医院怎么办 眼睛里长了虫子怎么办 吃了没熟的猪肉怎么办 没熟的鸡肉吃了怎么办 狗狗大便有绦虫怎么办 吃了有虫的猪肉怎么办 米猪肉吃了会怎么办 吃了鱼的寄生虫怎么办 鱼身体里有线虫怎么办 幼猫半夜一直叫怎么办