通过飞信的FetionVM的.net虚拟机来加载.net程序,实现在未安装.net的机器上运行.net程序

本来想把用C#写的程序重写移植到win32平台的,但是感觉重写好累,而且不是很熟练,就想着能不能在未安装.net的机器上运行,有需就有求,嘎嘎,百度了一会,已经有各位老大们已经在讨论用飞信的虚拟机平台来进行加载运行.net程序了,于是自己就想着去尝试着去做一下。
(PS:飞信的就是在.net平台上开发的,不同的是飞信做了一个.net虚拟机的平台,这样就能在非安装.net的机器上运行了)

由于启动文件要在win32上运行,所以就用了VC++6来进行写程序了,使用该启动程序来进行启动外部程序(我们的.net程序)

代码如下
#include "stdafx.h" 
 
int APIENTRY WinMain(HINSTANCE hInstance, 
  HINSTANCE hPrevInstance, 
  LPSTR lpCmdLine, 
  int nCmdShow) 
 { 
  //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)//若不是返回成功 
  { 
  WinExec("FetionVM.exe myapp.exe", SW_SHOW); 
  } 
  else 
  { 
  WinExec("myapp.exe",SW_SHOW); 
  } 
  return 0; 


通过读取注册表看看有没有安装.net2.0(net3.5增加了新功能,核心还是2.0,所以2.0就足够运行了),如果有,就直接运行了,就不使用虚拟机加载了。
然后把飞信的一些东东“借”过来用了哈,文件在D:/Program Files/China Mobile/Fetion/VMDotNet/v2.0.50727(把这个目录下的文件全部考走)
然后把这些文件和release的exe放到一起。
这些工作完成后,就可以进行打包了
安装包文件10M左右,对比过去单个exe的80Kb来说是大了不少,不过这样对于一个不想装190多M的.net库的人来说,很值了

飞信虚拟机运行.net 程序的方法在网上已经有很多文章了,就不再说了. 
飞信虚拟机不太好支持数据库,这里就说一下让飞信虚拟机支持数据库的方法. 
让飞信虚拟机支持使用Access的mdb数据库,即可以使用System.Data命名空间下的类和方法 
2008年7月11日,作者exy337 

需要使用以下6个dll. 
1.System.Data.dll 
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/System.Data.dll 
2.Microsoft.VC80.CRT.manifest 
飞信安装目录可以找到(已经在虚拟机目录了,但还是要,具体原因就不知为什么了) 
3.System.EnterpriseServices.dll 
4.System.EnterpriseServices.Thunk.dll 
5.System.EnterpriseServices.Wrapper.dll 
在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/目录下 
6.System.Transactions.dll 
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/System.Transactions.dll 

这6个dll跟你的.net程序放一个目录就OK了. 
比如说: 
安装飞信2008后,找到安装目录, 
留下 VMDotNet 目录 和 Fetion.exe ,其它全删除 
你的程序改名为 FetionFx.exe ,相应的mdb数据库也复制过来.再把上面说的6个dll也复制过来. 
双击Fetion.exe就可以运行你的程序了. 

注:GdiPlus.dll(也可以拷到跟前面6个dll相同的目录,win2000缺少GDP+,有它才能运行) 
飞信目录可以找到. 
类似原因.在2000下运行,你可能还需要升级mdac. 
net2.0需要的是mdac 2.6以后版本的.需2000自带的是mdac2.5版. 
直接google.谷歌搜索mdac升级就可以找到一大把升级下载. 

如果有什么疑问的,请加QQ群:56882399来讨论 
这几天一直在想利用飞信虚拟机在没有装.net框架的电脑上,运行自己的程序, 
却发现在他对数据库不怎么支持,经过几天的努力,找到了上面的方法,希望对跟自己同样问题的人有点帮助!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值