DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...
先說廢話
很多朋友對我寫的這個(gè)系列的第五篇比較感興趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html
因?yàn)槲页兄Z第五篇就公布源碼了,但是與第五篇相關(guān)的代碼我還沒有完成,
現(xiàn)在又花了一個(gè)周末的時(shí)間來寫這篇文章
原諒我吧~
(如果你覺得這篇文章更有吸引力的話~那另當(dāng)別論)
索引:
DotNet4應(yīng)用程序打包工具->升級版【三】宿主程序分析+全部源碼下載
DotNet4應(yīng)用程序打包工具->升級版【二】安裝工具分析
DotNet4應(yīng)用程序打包工具(把DotNet4安裝程序打包進(jìn)你的應(yīng)用程序;WINAPI開發(fā),無dotNet環(huán)境也可順利執(zhí)行)【一】整體思路
好了~言歸正傳!
先來張圖片!
以升級為如下:
1:緣起
在09年的時(shí)候?yàn)榱私鉀Q斯克迪亞的問題
寫了這個(gè)工具的簡易版:http://www.cnblogs.com/liulun/archive/2009/12/18/1627313.html
那篇文章寫的實(shí)在是太簡易了~
主要是因?yàn)?NET 3.5的包太大,打包到應(yīng)用程序中去,太怪!所以就沒有深入做這個(gè)工作
最近小洋(燕洋天)又提到這個(gè)問題~
考慮到現(xiàn)在.Net 4 x86只有二十幾兆;(x86andx64才四十幾兆)
如果能打包到應(yīng)用程序中去,就美多了
于是寫了這個(gè)工具。
2:分析
別看這個(gè)工具小(只有三個(gè)按鈕一個(gè)文本框)
其實(shí)他里面包含了三個(gè)程序
第一個(gè)就是你看到的這個(gè)圖片所展示的應(yīng)用程序
我們叫他“打包工具”
第二個(gè)和第三個(gè)程序是作為資源放在“打包工具”里的
第二個(gè)程序是dotNet4的安裝包
第三個(gè)程序負(fù)責(zé)判斷客戶端是否有dotNet環(huán)境
我們叫他“宿主程序”
下面我們就分別說說這三個(gè)程序的邏輯:
2.1打包工具
選擇好您的應(yīng)用程序(我們叫他“目標(biāo)程序”)
點(diǎn)開始打包后
“打包工具”先把“宿主程序”釋放到“目標(biāo)程序”的相同的目錄下
然后得到“目標(biāo)程序”的圖標(biāo)ICON資源
然后把“宿主程序”的圖表ICON資源替換掉
然后把整個(gè)“目標(biāo)程序”當(dāng)作資源添加到“宿主程序”中
然后“打包工具”把自身的dotNet安裝包資源也添加到“宿主程序”中
至此打包成功
2.2宿主程序
宿主程序的邏輯稍微多一些
在打包成功,把打包后的“宿主程序”分發(fā)到客戶電腦上之后
客戶打開宿主程序
先檢查注冊表,看客戶環(huán)境是否安裝了dotNet4應(yīng)用程序
如果沒有安裝
釋放dotNet安裝包資源(打包時(shí)加入進(jìn)去的)
執(zhí)行dotNet安裝包程序,等待安裝進(jìn)程執(zhí)行完成
安裝完成后,再次檢查注冊表
如果順利通過檢查
就釋放目標(biāo)程序
然后執(zhí)行目標(biāo)程序
等待目標(biāo)程序進(jìn)程執(zhí)行完成
執(zhí)行完成后,刪除釋放的dotNet應(yīng)用程序和目標(biāo)程序
然后“宿主程序”退出
3:后記
3.1為什么不靜默安裝dotNet4
雖然可以做到的
但是
第一dotNet4安裝過程中可能會有很多情況發(fā)生
要處理很多邏輯,做起來太復(fù)雜,
比如:阻滯的問題:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1385
(如果您愿意贊助我,我會考慮做這個(gè)工作,嘿嘿)
第二客戶端環(huán)境會報(bào)毒
3.2為什么在目標(biāo)程序執(zhí)行完成后要?jiǎng)h除目標(biāo)程序
我假定您打包的“目標(biāo)程序”就是一個(gè)安裝包
而且這個(gè)安裝包的擴(kuò)展名是.exe
一個(gè)安裝包程序
基本的功能應(yīng)該有安裝、卸載、創(chuàng)建桌面圖表等等
所以我執(zhí)行了一次您的安裝包~
以后的事情就讓您自己做吧~
3.3我會公布源碼的
雖然我對C和winapi都是一知半解
但我愿意公布源碼~
在接下去的這個(gè)系列的幾篇文章中會陸續(xù)公布源碼
3.4程序可能會有問題
我是在WIN2008的機(jī)器上開發(fā)的這個(gè)程序
在WIN2003的機(jī)器上測試了這個(gè)程序
開發(fā)和測試都是64位環(huán)境
現(xiàn)在也深夜了~沒有人幫我測試~
如果有問題,我會盡快搞定的~
3.5先發(fā)布編譯版本
由于已經(jīng)把DotNet4安裝包編譯到程序里面去了比較大~
就沒有傳到博客園服務(wù)器上來
如果您對這個(gè)程序感興趣
請點(diǎn)擊推薦后在評論里留下您的郵箱
我會在今天晚上六點(diǎn)之后統(tǒng)一發(fā)郵件給大家
注意:截至?xí)r間是2011年12月12號晚六點(diǎn)整~
這個(gè)時(shí)間點(diǎn)之后填寫的郵箱我就不再發(fā)送了~
見諒
請大家統(tǒng)一把郵箱中的@符號替換成#號(避免郵箱地址被采集)
總結(jié)
以上是生活随笔為你收集整理的DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 日期格式的转换
- 下一篇: 使用频繁的正则表达式集合