怎样将.Net程序部署到没有安装.Net Framwork的机器上?

部署在.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,然后运行安装。相信大家一定能够喜欢这个插件。

我在微软的Virtual PC 上的windows2000中对该程序进行了部署,整个安装过程如下:

点击安装程序 > 提示确定开始安装,取消推出安装 > 系统没有安装.net Framewrok提示是否希望安装 Mircrosoft .NET Framework 1.1软件包 > 没有安装IE 5.01或更高版本提示先安装IE高版本 > .NET Framework 1.1安装 > 提示安装Microsoft .NET Framework语言套件 > 安装应用程序向导 > 提示安装成功。

点击程序运行,一切象预想的那样。相信许多人已经在使用了,但更多人可能没有用过这个傻瓜式的插件。

网上在.net程序部署方面有许多相关的文章,下面几篇我认为是比较好的:

自定义 MSI 安装

http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/usvs04j7.mspx

把.NET程序部署到没有安装.NET Framework的机器上

http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/deployNETApp.mspx

部署ASP.NET的三大技术

http://tech.ccidnet.com/pub/article/c295_a68309_p1.html

使用 Visual Studio .NET 重新分发 .NET 框架

http://www.microsoft.com/china/msdn/library/netFramework/netframework/VCSdnnetdepvsredistdeploy.mspx

部署程序集

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misbasicinstincts.mspx

在VS.NET中通过Setup and Deployment Projects来制作自己的安装程序的示例:

http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconDeploymentScenarios.asp

vs2003打包的更多相关文章

  1. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  2. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  3. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  4. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  5. Node-Webkit打包

    1.node-webkit是什么? NW.js is an app runtime based on Chromium and node.js. You can write native apps i ...

  6. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  7. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

  8. 4.Android 打包时出现的Android Export aborted because fatal error were founds [closed]

    Android 程序开发完成后,如果要发布到互联网上供别人使用,就需要将自己的程序打包成Android 安装包文件(Android Package,APK),其扩展名为.apk.使用run as 也能 ...

  9. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

随机推荐

  1. log4j常用配置以及日志文件保存位置

    log4j.rootLogger=INFO,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender ...

  2. MVC HTML辅助类常用方法记录

    (1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(modelItem => item.Titl ...

  3. pomelo架构概览

    pomelo之所以简单易用.功能全面,并且具有高可扩展性.可伸缩性等特点,这与它的技术选型和方案设计是密不可分的.在研究大量游戏引擎设计思路基础上,结合以往游戏开发的经验,确定了pomelo框架的设计 ...

  4. JavaSE的知识

    一 SE的知识体系: java基础: 一基础语法 8个基本数据类型-->8个包装类 数据类型转换: 自动转换(从小到大) 强制转换(从大到小) 注意:int 和char 分支与判断: if(){ ...

  5. Wordpress更换编辑器

    这里我更换为KindEditor 1.下载插件 https://wordpress.org/plugins/kindeditor-for-wordpress/ 2.启动插件 3.在 设置 – Kind ...

  6. NuGet的几个小技巧

    因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以 ...

  7. ASP.NET 开发笔记1

    1.GirdView  动态添加列 PostBack 后 模板列中的控件丢失的问题 http://blackboy51.blog.163.com/blog/static/511359122011910 ...

  8. oracle入门-%的用法

    vempno emp.empno%type; 例如上面的这句话,你的vempno就是你定义的变量,和面的那个emp是你数据库里面存在的表,他的表里面有意个empno字段,然后%type就是empno的 ...

  9. Selenium2学习-015-WebUI自动化实战实例-013-通过 URL 关闭多余的已开浏览器窗口

    在日常的 WebUI 自动化测试脚本执行的过程中,经常会打开不同的网页,进行相应的操作,此时可能会打开很多的网页,当打开的网页过多时,无效的网页资源对运行脚本的机器造成了过多无效的资源浪费,因而在日常 ...

  10. 修改phpmyadmin文件的最大上传大小

    修改php.ini 1.file_uploads on 是否允许通过HTTP上传文件的开关 2.upload_tmp_dir 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 ...