不装.net Framework 也能运行WinForm程序,用飞信(转)
本來想把用C#寫的程序重寫移植到win32平臺的,但是感覺重寫好累,而且不是很熟練,就想著能不能在未安裝.net的機器上運行,有需就有求,嘎嘎,百度了一會,已經有各位老大們已經在討論用飛信的虛擬機平臺來進行加載運行.net程序了,于是自己就想著去嘗試著去做一下。
(PS:飛信的就是在.net平臺上開發的,不同的是飛信做了一個.net虛擬機的平臺,這樣就能在非安裝.net的機器上運行了)
開始動手^_^
由于啟動文件要在win32上運行,所以就用了VC++6來進行寫程序了,使用該啟動程序來進行啟動外部程序(我們的.net程序)
代碼如下
// 文本隔行加亮2.cpp : Defines the entry point for the application.
?????? //
????? #include "stdafx.h"
????? int APIENTRY WinMain(HINSTANCE hInstance,
?? ?? ?? ?? ?? ?? HINSTANCE hPrevInstance,
?? ?? ?? ?? ?? ?? LPSTR lpCmdLine,
?? ?? ?? ?? ?? ?? int nCmdShow)
???? {
?????? // TODO: Place code here.
??????? //HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727
??????? HKEY hKey;
??????? LPCTSTR path="SOFTWARE\\Microsoft\\.NETFramework\\v2.0.50727";
??????? //打開注冊表鍵,查看系統是否安裝了.net Frameworkv2.0
??????? LONG lResult=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_READ,&hKey));
??????? ::RegCloseKey(hKey);
??????? if(!lResult==ERROR_SUCCESS)//若不是返回成功
??????? {
??????????? //MessageBox(NULL,"由于是用飛信的.net虛擬機加載啟動的\n所以啟動會有點慢,請稍候幾秒鐘\n\n請\"確認\"后繼續","Hello",MB_OK);
?? ??? WinExec("FetionVM.exe 文本隔行加亮.exe", SW_SHOW);
??????? }
??????? else
??????? {
??????????? WinExec("文本隔行加亮.exe",SW_SHOW);
??????? }
??????? return 0;
??? }
代碼不多說了,注釋里都有,通過讀取注冊表看看有沒有安裝.net2.0(net3.5增加了新功能,核心還是2.0,所以2.0就足夠運行了),如果有,就直接運行了,就不使用虛擬機加載了。
然后debug沒有什么錯誤之后,release下,
然后把飛信的一些東東“借”過來用了哈,文件在D:\Program Files\China Mobile\Fetion\VMDotNet\v2.0.50727(把這個目錄下的文件全部考走)
然后把這些文件和release的exe放到一起。
這些工作完成后,就可以進行打包了
第一想到的就是用vs08中的安裝部署進行打包,Build一次到同學那未安裝.net的機子試了下后,發現不行,提示安裝.net,
因為.net在安裝部署時會自動檢測“依賴項”,由于我需要加載的net程序依賴于.net平臺,
所以微軟強制了這個“依賴項”(感覺微軟應該把這個強制給刪了,雖然強制有一定的好處,但是提供選擇豈不是更好),
無奈,只有想別的方法去打包,然后想用InstallShield來打包,于是找來vc6的安裝盤把這個裝了下,由于沒用過,就問了下同學,
同學說需要專門的語言來寫點東西,啊啊,現在很急著用,所以再次放棄,到網上去淘那些“傻瓜”式的打包軟件,
嘎嘎,找個了Setup2Go的打包軟件,很好用哈,(有想要的直接baidu這個軟件名,N多鏈接),很快的,打包完畢,Perfect!^_^
到了個未安裝.net的機器上測試了下,完全沒問題哈,只是使用虛擬機來加載時可能打開時會有2秒左右的延遲,嘎嘎,要稍等,
不過已經很好了哈,恩恩,安裝包文件10M左右,對比過去單個exe的80Kb來說是大了不少,不過這樣對于一個不想裝190多M的.net庫的人來說,很值了哈^_^
順便說下:想要.net程序完全脫離.net平臺是不可能的哈,即使用虛擬機來加載那也畢竟是個.net的虛擬機。
總結
以上是生活随笔為你收集整理的不装.net Framework 也能运行WinForm程序,用飞信(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: knllgobjinfo: MISSIN
- 下一篇: Windows7操作系统任务栏的相关技巧