当前位置: 首页 > >

vs2010发布、打包安装程序详解

发布时间:

1、 在 vs2010 选择“新建项目”?“ 其他项目类型”?“ Visual Studio Installer”? “安装项目” :

命名为:Setup1 ,选择好位置后点确定。这时在 VS2010 中将有三个文件夹,如图:

a.“应用程序文件夹” :表示要安装的应用程序需要添加的文件; b.“用户的‘程序’菜单” :表示应用程序安装完,用户的“开始菜单”中的显示的 内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe 和卸载 程序.exe; c.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe 快捷方式。 2、 应用程序文件夹中点右键,添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的 debug 目录下的文件(主要为.exe 文件, 其他文件可选) ;

如果有所需要的动态库也加载进来:

如果还要添加子文件夹 则需要“添加文件夹”

然后把对应的子文件里的内容添加到此文件夹中;

把需要创建程序快捷方式的图标也添加进来(在 res 文件夹下) ,后缀名为:ico

3、 在创建的项目名称(Setup1)上点击右键?属性,选择系统必备:

如果在项目名称(Setup1)的“检测到的依赖项”里检测到所添加的程序文件有 .NET

依赖,如图: Installer3.1(可选项),如果没有则不用选。

则选择所需的.NET 的版本和 Windows

选择: “从与我应用程序相同的位置下载系统必备组件” ,这样安装包就会打包 .NET FrameWork ,在安装时不会从网上下载.NET FrameWork 组件;但是安装包会比较大。

在创建安装程序时,需要设置启动条件(如果有.NET 依赖) :在项目名称(setup1)上, 点击右键选择“视图”?“启动条件” :

然后 VS2010 会弹出启动条件视图:

在“启动条件”的属性中 , 点击 Version 选择所需的.NET 版本。

4、 设置安装文件的目录(路径) : 创建的项目名称(setup1)的属性中设置参数如下图:

其中 Author 为作者;Manufacturer 为公司名称;ProductName 为应用程序的名字;

例如我的设置为: Author:nnrh; Manufacturer:M&W; ProductName:测卡程序。 把 InstallAllUsers 设置为 True 。 (这样在“控制面板”程序中会显示公司的名称; 在安装时会默认为“任何人” ,否则默认为“只有我” )

点击应用程序文件夹,在其属性里,如下图:DefaultLocation 为默认的安装路径,第一 个([ProgramFilesFolder])为系统主目录(默认 C:\Programe) ,第二个([Manufacturer])为 公司名,第三个([ProductName])为应用程序名称,这样在安装时就会创建两层的文件路 径。需要删除 DefaultLocation 中的:[Manufacturer] 。删除后只有应用程序的名称(默

认的安装路径为:C:\Program Files\测卡程序,如果没有删除,则默认的安装路 径为:C:\Program Files\M&W\测卡程序)。

5、 创建应用程序图标与卸载程序: A.“在应用程序文件夹”中的.exe 文件中,点击右键,创建快捷方式:

重命名“测试程序” ,然后点击右键属性:选择 Icon

双击进入,点击 浏览—》应用程序文件夹--》选择我们之前添加的“CheckCard.ico”

确定后,拖动此快捷方式到“用户桌面” B. 在《用户的‘程序’菜单》 中添加一个文件夹,命名为: “测试程序” (如果不 添加一个文件夹,安装程序后在开始--》程序里会直接显示 CheckCard.exe,如果添加 了文件夹,安装程序后在开始--》程序里会出现一个测试程序文件夹,在其下面会有 CheckCard.exe 程序)然后同样的方式创建 CheckCard.exe 的一个快捷方式命名为测 试程序,选择图标,拖动到“测试程序”文件夹中;

c.创建卸载程序: 在“应用程序文件夹”中添加:C:Windows\System32\Msiexec.exe

右键创建快捷方式,重命名为:卸载,把此快捷方式拖动到“测试程序”文件夹中;

点击项目名称(Setup1) ,在属性中找到:ProductCode,复制此 ProductCode ,粘 贴到“卸载”快捷方式的 Arguments 属性里,前面加/x 空格。

注:这里是 ProductCode,而不是 UpgradeCode.

6、 完成以上步骤,就可以生成解决方案了。

7、 生成解决方案后,在 debug 文件夹中就是我们需要的安装包(setup.exe),如果在前 面的《系统必备》里选择了.NET 版本,则会.NET 版本安装包(DotNetFX40 文件夹, 根据版本不同,名称也有所不同) ,安装包发布时应将整个 Debug 文件夹发布出去。

8、 点击 setup.exe 安装完在开始菜单中有“测试程序”文件夹,里面有我们创建的两个 快捷方式;

桌面上也有快捷方式。

我们安装后,右键点击桌面的测试程序,选择属性,会发现《打开文件位置》 (本 文用的系统是 Win7,XP 下为查找目标)是灰色的,不用使用,开始程序里面的 也是如此。如图:

这个问题应该是 vs 打包工程的问题,在 vs 中好像没找到可以设置的地方,在网 上查了半天,好象只有下面一种解决办法: 在网上下载 orca 工具(msi 文件编辑工具)。安装 orca 后,用 orca 打开 msi 安 装包,在左边的 Tables 列表中找到 Shortcut 表,在右边记录中找到 Directory 为 DesktopFolder 的记录, 修改该记录的 Target 属性为 [TARGETDIR]应用程序名称.exe (测试过不用后面的.exe 也可以) 。

可以看出 DesktopFolder 为桌面快捷方式,最上面的为开始程序里的快捷方式, 将 Target 属性改过后保存即可。安装后打开文件夹位置可用。

点击可以打开 CheckCard.exe 所在文件夹。

还有我们点击开始程序里的卸载,可以卸载掉程序,但是点击安装文件夹里的 msiexec.exe 会出现以下窗口:

Msiexec.exe 直接点击是不能卸载程序的,那要是客户要想卸载掉程序,万一点 击了安装程序下的 msiexec.exe 出现上面的情况可能会以为有问题。为了解决这 一问题,我们可以在《目标计算机上的文件系统》上点右键—》添加特殊文件夹 —》 用户的 Application Data 文件夹 (这里可以自己根据情况添加) , 把 msiexec.exe 放到此文件夹下(可以更名为 uninstall.exe ) ,然后再创建快捷方式(注:在 msiexec.exe 创建好快捷方式后,不能再移动 msiexec.exe 到别的文件夹里,如果 这样会使快捷方式找不到卸载程序而无法卸载程序) 。这样安装后不会在程序的

安装文件夹下出现 msiexec.exe,会安装在 Application Data 文件夹里(这是个隐藏 文件夹) 。客户卸载程序时只能从开始程序里卸载或是在控件面板的卸载程序里 卸载。 (这个我个人的想法,其实也可以不用添加卸载程序,要想卸载程序,可 以在控件面板的卸载程序里卸载) 。

下面是英文版 VS2010 制作中文环境安装包 (这是网上搜的, 因个人用 的汉化版的 VS,所以不存在下面的情况,所以没有测试过)
自从 VS2010 发布以来,一直在用英文版本,接下来就说明用英文版本制作中文环境安装 包方法。 开发工具:VS 2010 EN 开发语言:Visual C# 先来看下英文版制作中文环境安装包出现的错误:

当创建有中文字符的文件夹或文件名都会出现“波浪线”,安装后就会是乱码,当然,解决这 个问题的方法也很简单,

按照上图,设置安装包属性 Localization 为 Chinese(Simplified)。 这样虽然可以解决中文字符问题,但如果是要打包.net 环境的话(当然,您要是不打包.net 环境这个就不在讨论之内了) ,如下图选择将.net 环境一起打包,

当生成安装程序的时候,出现了以下错误,如下图:

根据错误,很明显没有找到中文语言包,但是错误中说的磁盘又指的哪个目录呢? 目录是指这里:C:/Program Files/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX40Client(我的 VS 装在 C 盘,根 据实际情况来定) 当然您会想是不是把中文语言包放在目标目录下不就可以吗?暂且不下判断, 下载个中文语 言放到目录下试试, Microsoft .Net Framework 4.0 完整版语言包 Microsoft .Net Framework 4.0 客户端版语 言包 下载下来之后,将完整版复制到“Packages/DotNetFX40/zh-Hans 将客户端版复制到“Packages/DotNetFX40Client/zh-Hans” (对应语言环境)

重新生成安装包程序。。。。。。 Rebuild All Succeded 注:所有需要一起打包的程序放在“C:/Program Files/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages”

可根据实际安装环境进行配置。




友情链接: