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

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

 

本来想把用 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.0net3.5 增加了新功能,核心还是 2.0 ,所以 2.0 就足够运行了),如果有,就直接运行了,就不使用虚拟 机加载了。

然后 debug 没有什么错误之后, release 下,

然后把飞信的一些东东“借”过来用了哈,文件在 D:/Program Files/China Mobile/Fetion/VMDotNet/v2.0.50727 (把这个目录下的文件全部考走)

然后把这些文件和 releaseexe 放到一起。

这些工作完成后,就可以进行打包了

第一想到的就是用 vs08 中的安装部署进行打包, Build 一次到同学那未安装 .net 的机子试了下后,发现不行,提示安装 .net

因为 .net 在安装部署时会自动检测“依赖项”,由于我需要加载 的 net 程序依赖于 .net 平台,

所以微软强制了这个“依赖项”(感觉微软应该把这个强制给删了,虽 然强制有一定的好处,但是提供选择岂不是更好),

无奈,只有想别的方法去打包,然后想用 InstallShield 来打包,于是找来 vc6 的安装盘把这个装了下,由于没用过,就问了下同学,

同学说需要专门的语言来写点东西,啊啊,现在很急着用,所以再次放 弃,到网上去淘那些“傻瓜”式的打包软件,

嘎嘎,找个了 Setup2Go 的打包软件,很好用哈,(有想要的直接 baidu 这个软件名, N 多链接),很快的,打包完毕, Perfect!^_^

到了个未安装 .net 的机器上测试了下,完全没问题哈,只是使用虚拟机来 加载时可能打开时会有 2 秒左右的延迟,嘎嘎,要稍等,

不过已经很好了哈,恩恩,安装包文件 10M 左右,对比过去单个 exe80Kb 来说是大了不少,不过这样对于一个不想装 190M.net 库的 人来说,很值了哈 ^_^

顺便说下:想要 .net 程 序完全脱离 .net 平台是不可能的哈,即使用虚拟机来加载那也毕竟是个 .net 的 虚拟机。

转载请注明原出处,谢谢http://hi.baidu.com/flyskymlf/blog/item/1c425259f816552f2834f0ce.html

有 想要C#代码的可以mail me mailto:mlf_malongfei@163.com 可能不及时,但一周内肯定会有回复的

 

参考文章:对作者表示感谢

http://www.cnblogs.com/XwendotNet/archive/2008/04/06/1138810.html

http://www.cnblogs.com/scottckt/archive/2007/12/14/995258.html

http://blog.csdn.net/wlwqw/archive/2007/09/17/1788113.aspx

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值