本来想把用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框架的电脑上,运行自己的程序,
却发现在他对数据库不怎么支持,经过几天的努力,找到了上面的方法,希望对跟自己同样问题的人有点帮助!
(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框架的电脑上,运行自己的程序,
却发现在他对数据库不怎么支持,经过几天的努力,找到了上面的方法,希望对跟自己同样问题的人有点帮助!