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

简介: 先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布源码了,但是与第五篇相关的代码我还没有完成, 现在又花了一个周末的时间来写这篇文章 原谅...

先说废话

很多朋友对我写的这个系列的第五篇比较感兴趣: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号晚六点整~

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

见谅

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

目录
相关文章
|
2月前
|
C语言
Qt5项目开发中,打包生成单个EXE程序
Qt5项目开发中,打包生成单个EXE程序
271 0
|
2月前
Qt程序打包发布记录使用windeployqt工具
Qt程序打包发布记录使用windeployqt工具
|
算法 Java 开发工具
openHarmony系统打包应用程序
经过一段时间的学习,打包应用并安装应该是最激动人心的一环了,所以今天带大家完成openHarmony应用的安装,正文即将开始~~
359 0
openHarmony系统打包应用程序
CLion中创建多个.c文件不能运行问题及报错问题
CLion中创建多个.c文件不能运行问题及报错问题
CLion中创建多个.c文件不能运行问题及报错问题
|
Java Maven 开发工具
如何让自己的SpringBoot程序在Windows环境下打包运行?
如何让自己的SpringBoot程序在Windows环境下打包运行?
如何让自己的SpringBoot程序在Windows环境下打包运行?
|
Ubuntu Shell 计算机视觉
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
借助Fiddle使用不同版本的UI5库文件进行测试
借助Fiddle使用不同版本的UI5库文件进行测试
107 0
借助Fiddle使用不同版本的UI5库文件进行测试
|
Web App开发 数据可视化 Unix
Windows环境VS2017编译skia库,亲测成功,借助skui的方法
Windows环境VS2017编译skia库,亲测成功,借助skui的方法
669 0
Windows环境VS2017编译skia库,亲测成功,借助skui的方法
|
Shell Android开发
Android模拟器环境中安装和删除应用程序
1. 安装Android应用程序 1) 启动Android模拟器 2) adb install (apk在PC上的路径/)*.apk (将apk文件上传到了模拟器自带操作系统的data/app目录下了) 3) Android模拟器界面中浏览打开apk应用程序   2. 删除Android应用程序 删除 Android有好几种方法。
1937 0