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号晚六点整~

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

见谅

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

目录
相关文章
|
7月前
|
Java Linux Windows
windows实现自动部署jar包运行程序
windows实现自动部署jar包运行程序
297 0
|
4月前
|
JavaScript Windows
Nativefier——将网站打包成windows应用程序
Nativefier——将网站打包成windows应用程序
84 0
|
6月前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
141 5
|
7月前
|
C语言
Qt5项目开发中,打包生成单个EXE程序
Qt5项目开发中,打包生成单个EXE程序
921 0
|
7月前
LabVIEW为可执行文件构建安装程序时找不到运行引擎
LabVIEW为可执行文件构建安装程序时找不到运行引擎
74 0
|
7月前
Qt程序打包发布记录使用windeployqt工具
Qt程序打包发布记录使用windeployqt工具
122 0
|
Java Maven 开发工具
如何让自己的SpringBoot程序在Windows环境下打包运行?
如何让自己的SpringBoot程序在Windows环境下打包运行?
如何让自己的SpringBoot程序在Windows环境下打包运行?
|
Ubuntu Shell 计算机视觉
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
|
XML 数据安全/隐私保护 数据格式
鸿蒙系统应用开发入门HelloWord(DevEco Studio怎么启动项目以及程序的运行过程)
使用DevEco Studio新建项目之后,会自带HelloWorld(其他语言需要我们自己写),由于项目使用的模拟器不是在我们本地,而是部署在华为的服务器中,所以我们需要登录华为账号并实名认证才可以使用
607 0
鸿蒙系统应用开发入门HelloWord(DevEco Studio怎么启动项目以及程序的运行过程)
|
Web App开发 数据可视化 Unix
Windows环境VS2017编译skia库,亲测成功,借助skui的方法
Windows环境VS2017编译skia库,亲测成功,借助skui的方法
741 0
Windows环境VS2017编译skia库,亲测成功,借助skui的方法