zoukankan      html  css  js  c++  java
  • 不装.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.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的虚拟机。

  • 相关阅读:
    状压dp大总结1 [洛谷]
    集训日记(暑期第二周)【真正的集训,真正的考试】
    集训日记(暑期第一周)【6.22始】
    集训模拟赛3【啥也不会的一天】
    P2194 HXY烧情侣【Tarjan】
    6.28-集训模拟赛2【水爆但有进步的半天】
    Linux基础管道管理
    Linux基础进程管理优先级
    awk文本处理
    sed流编辑器
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197290.html
Copyright © 2011-2022 走看看