.net windows程序打包部署的一种思路

来源:未知 责任编辑:智问网络 发表时间:2013-10-22 19:24 点击:

 

使用.net开发桌面应用,广大亲门最头疼的莫过于客户端部署的问题。基于.net 2.0 的winfrom程序因为 Framework 的分发包大小为20M左右还好解决,不幸的是如果项目中使用了Wcf,wpf 等技术,那个350多M的 .net 3.5 sp1 可以让亲欲哭无泪了。虽然民间流传着很多.net 3.5的精简包,但必竟不是官方的解决方案。

   

win7自带了.net 3.5 sp1,而且win7的装机量已经很高,所以我们大可以将项目升级到 .net 3.5。

目标:

基于.net 3.5开发的应用程序, 在win7 或安装有.net 3.5 sp1 的机器上可以直接安装运行,而在其它机器上则需要安装.net 4.0框架,使.net 3.5应用程序运行在.net 4.0框架上。

   

   

本文的解决方案如下:

1、项目目标框架为 .net 3.5。

2、客户端部署使用.net 4.0 Framework 代替 3.5 sp1;4.0的分发包为48M。

3、软件安装时检测到系统安装有.net 3.5 sp1 则不安装 4.0框架。

   

要解决的问题:

1、首先需要使 .net 3.5编写的应用程序可以在.net 4.0 环境中运行。

我们可以在app.config中添加如下配置节:

 

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v4.0"/>

</startup>

该节点表示

表示使用.NET4.0运行时来运行程序。有关 startup 的详细信息请移步aspx">Msdn 。

这样我们新可以在只安装有.net 4.0的机器上运行 .net 3.5编写的应用程序了。

   

等等,还没有万事大吉,上面的设置如果在只装有 .net3.5框架 而没有安装 .net 4.0框架的机器上运行会报如下错误:

\

"好难过,这不是我要的那种结果,结果!" ,解决办法如下:

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v4.0"/>

<supportedRuntime version="v2.0.50727"/>

</startup>

红色部分是我们新添加的,目的是指定软件支持在v2.0.50727环境中运行。(ps: .net 3.5 的clr运时环境为 2.0)

   

Oh oh 目标达到,现在软件已经可以在只安装.net 4.0 或 只安装有 .net 3.5的机器上运行了。

   

2、软件安装时首先检测系统是否已安装.net 3.5 如果没有安装则安装.net 4.0 框架,反之则跳过运行环境我检测,只接安装软件。

本文使用 Advanced Installer 7.2 制作安装包。

安装包的具体制作部骤本文不再描述,有兴趣的同学可以google之,下面只说 "运行环境"设置部分。

\

按图依次点击 弹出"新建运行环境"对话框:

\

注意:在 "安装文件"->"网址"中填写的应该是.net 4.0安装包的地址,而不是 .net 3.5 sp1的地址,当然我们也可以在位置中选择"程序包中的文件",选择本地的.net 4.0框架安装文件。

\

   

接下来我们设置"安装条件":

\

   

安装条件中已经默认设置了检没.net 3.5 sp1 是否安装条件,检测注册表项:

HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\SP

我们需要添加检测.net 4.0是否安装的注册表检测项:

HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Install

\

   

Ok,到些就完成了运行环境的的设置了

 

摘自 白云后蓝天

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1