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

先说废话

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

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

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

原谅我吧~

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

索引:

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

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

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

好了~言归正传!

先来张图片!

以升级为如下:

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

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

见谅

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

时间: 2024-08-30 13:16:29

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

java-为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊

问题描述 为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊 为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊 解决方案 大多数时候都是用10进制的,目的就是便于理解.但是有时候用16进制,因为在某些场合下,16进制更好理解.比如说字节数据,10进制下,529你能看出是哪两个字节么?但是0x0211,一看就是02 11两个字节. 解决方案二: 你可以用十进制,但是很多时候16进制更方便,比如控制灯的开关,十六进制加上位操作可以较为直观的编写出控制程序 解决方案三

vs 2012自带打包工具进行部署安装

原文 http://www.cnblogs.com/javawebsoa/archive/2013/04/05/3001632.html#2667832 使用vs2012做的程序,程序做完后准备打包部署.VS有自带的部署安装工具,就像试试,然后就有了一堆问题问题,归根到底有点原因是:英文水平太低,看到满页面的英文,我就不想看.后来经过查找资料终于打包成功.下面来一步一步聊聊我打包部署的过程   一.打包前查看是否已经安装InstallShield Limit Edition Project.  

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

索引 DotNet4应用程序打包工具->升级版[三]宿主程序分析+全部源码下载 DotNet4应用程序打包工具->升级版[二]安装工具分析 DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序:WINAPI开发,无dotNet环境也可顺利执行)[一]整体思路   废话少说 入口函数 入口函数是所有逻辑的集合体 int WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdSho

用InstallShield9 进行ASP软件的打包和数据库自动安装

installshield|打包|数据|数据库|自动安装|installshield|打包|自动安装 //近期公司用ASP+SQL开发办公自动化OA,需要制作安装程序发行,此脚本是用IS9.0制作,以此共享,与各同仁交流学习#define BITMAP_ID 1 #include "ifx.h" //不能移动 prototype CreateWebSite(STRING,STRING); // 创建 IIS 站点prototype CreateVirtualDir(STRING); /

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

在本系列的上一篇中, 我们给出了这个工具的具体的思路. 得到了很多朋友的反馈! 综合朋友的意见, 在没有改变工具原理的基础上 我对这个程序做了升级 如下图: 如你所见, 现在这个打包工具可以打包dotNet2.0  3.5  4 乃至所有在注册表中添加过注册表项的应用程序 下面我们就开始分析安装工具(也就是上面你看到的那个图片) -------------------------- 入口函数: int WinMain(HINSTANCE hInstance,HINSTANCE hPreInsta

Qt 打包依赖 及发布安装程序

1.打包依赖 Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe.以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 for Desktop (MinGW 4.9 32 bit),可以打开 Qt

java 做的桌面程序可以打包成EXE,但能打包成MSI安装吗?

问题描述 java 做的桌面程序可以打包成EXE,但能打包成MSI安装吗?如果可以,要怎么做,有没有什么好的免费的工具使用?我自己知道可以先打包成EXE,然后再用工具转换成MSI,但不知道JAVA桌面程序能不能打包成MSI来安装呢? 问题补充:liveHappy 写道 解决方案 我只找到一个.使用一个开源的组件(jdic)的包装器组件 ,把JNLP(Java Web Start)应用转换成本地安装程序,那么如果是windows系统的话包装成的就是msi,它仅仅为Web Start应用提供点击安装

VS2012的Windows Service程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等……

问题描述 VS2012的WindowsService程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等-- 解决方案 解决方案二:windowsservice安装过程中,不光是复制可执行文件,很关键的一步是需要自定义的,就是注册服务,并且启动服务.注册要用到installutil,启动就用netstartxxxxxx解决方案三:我是用这种方法配置打包的,以前有个项目也是按这种方法配置打包成功运行没有问题,不知道这次是怎么回事http://bl

现完成了一套插件式构架的程序,用VS2005打包,能不能做到安装时选择了那些插件,才把相应插件的DLL安装进客户机去?

问题描述 现完成了一套插件式构架的程序,用VS2005打包,能不能做到安装时选择了那些插件,才把相应插件的DLL安装进客户机去? 解决方案 解决方案二:有人知道嘛?或者提下思路也好啊......解决方案三:顶上去..........解决方案四: 解决方案五:没人知道嘛?还是.NET自己打包,没法实现这种功能?一定要先把所以的DLL文件都COPY到客户机的?解决方案六:小顶一下解决方案七:可能你要自己在Setup程序里面写自定义的安装步骤,没写过具体也没办法告诉你你可以考虑InstallShiel