zoukankan      html  css  js  c++  java
  • DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路

    先说废话

    很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html

    因为我承诺第五篇就公布源码了,但是与第五篇相关的代码我还没有完成,

    现在又花了一个周末的时间来写这篇文章

    原谅我吧~

    (如果你觉得这篇文章更有吸引力的话~那另当别论)

    索引:

    DotNet4应用程序打包工具->升级版【三】宿主程序分析+全部源码下载

    DotNet4应用程序打包工具->升级版【二】安装工具分析

    DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路

    好了~言归正传!

    先来张图片!

    image

    以升级为如下:

    1:缘起

    在09年的时候为了解决斯克迪亚问题

    写了这个工具的简易版:http://www.cnblogs.com/liulun/archive/2009/12/18/1627313.html

    那篇文章写的实在是太简易了~

    主要是因为.NET 3.5的包太大,打包到应用程序中去,太怪!所以就没有深入做这个工作

    最近小洋(燕洋天)又提到这个问题~

    考虑到现在.Net 4 x86只有二十几兆;(x86andx64才四十几兆)

    如果能打包到应用程序中去,就美多了

    于是写了这个工具。

    2:分析

    别看这个工具小(只有三个按钮一个文本框)

    其实他里面包含了三个程序

    第一个就是你看到的这个图片所展示的应用程序

    我们叫他“打包工具”

    第二个和第三个程序是作为资源放在“打包工具”里的

    第二个程序是dotNet4的安装包

    第三个程序负责判断客户端是否有dotNet环境

    我们叫他“宿主程序”

    下面我们就分别说说这三个程序的逻辑:

    2.1打包工具

    选择好您的应用程序(我们叫他“目标程序”)

    点开始打包后

    “打包工具”先把“宿主程序”释放到“目标程序”的相同的目录下

    然后得到“目标程序”的图标ICON资源

    然后把“宿主程序”的图表ICON资源替换掉

    然后把整个“目标程序”当作资源添加到“宿主程序”中

    然后“打包工具”把自身的dotNet安装包资源也添加到“宿主程序”中

    至此打包成功

    2.2宿主程序

    宿主程序的逻辑稍微多一些

    在打包成功,把打包后的“宿主程序”分发到客户电脑上之后

    客户打开宿主程序

    先检查注册表,看客户环境是否安装了dotNet4应用程序

    如果没有安装

    释放dotNet安装包资源(打包时加入进去的)

    执行dotNet安装包程序,等待安装进程执行完成

    安装完成后,再次检查注册表

    如果顺利通过检查

    就释放目标程序

    然后执行目标程序

    等待目标程序进程执行完成

    执行完成后,删除释放的dotNet应用程序和目标程序

    然后“宿主程序”退出

    3:后记

    3.1为什么不静默安装dotNet4

    虽然可以做到的

    但是

    第一dotNet4安装过程中可能会有很多情况发生

    要处理很多逻辑,做起来太复杂,

    比如:阻滞的问题:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1385

    (如果您愿意赞助我,我会考虑做这个工作,嘿嘿)

    第二客户端环境会报毒

    3.2为什么在目标程序执行完成后要删除目标程序

    我假定您打包的“目标程序”就是一个安装包

    而且这个安装包的扩展名是.exe

    一个安装包程序

    基本的功能应该有安装、卸载、创建桌面图表等等

    所以我执行了一次您的安装包~

    以后的事情就让您自己做吧~

    3.3我会公布源码的

    虽然我对C和winapi都是一知半解

    但我愿意公布源码~

    在接下去的这个系列的几篇文章中会陆续公布源码

    3.4程序可能会有问题

    我是在WIN2008的机器上开发的这个程序

    在WIN2003的机器上测试了这个程序

    开发和测试都是64位环境

    现在也深夜了~没有人帮我测试~

    如果有问题,我会尽快搞定的~

    3.5先发布编译版本

    由于已经把DotNet4安装包编译到程序里面去了比较大~

    就没有传到博客园服务器上来

    如果您对这个程序感兴趣

    点击推荐后在评论里留下您的邮箱

    我会在今天晚上六点之后统一发邮件给大家

    注意:截至时间是2011年12月12号晚六点整~

    这个时间点之后填写的邮箱我就不再发送了~

    见谅

    请大家统一把邮箱中的@符号替换成#号(避免邮箱地址被采集)

  • 相关阅读:
    linux安装篇之mongodb安装及服务自启动配置
    Linux下启动mongodb
    java 实现 图片与byte 数组互相转换
    用java imageio调整图片DPI,例如从96调整为300
    StringRedisTemplate操作redis数据
    Docker 更换国内的Hub源
    2、Docker 基础安装和基础使用 一
    Centos 6.x Openssh 升级 7.7p1 版本
    1、Docker 简介
    2. Python环境安装
  • 原文地址:https://www.cnblogs.com/liulun/p/2284360.html
Copyright © 2011-2022 走看看