本来想把用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程序,用飞信(转)相关推荐

  1. 如何隐藏运行 winform 程序?

    群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧! 第一版 将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就用最简单的方 ...

  2. 运行winform程序提示:You must install .NET Desktop Runtime 6.0.1(x64)

    场景 需要将一个winform程序打包发送给客户运行.一开始是将debug下所有文件发送给客户,然后客户点击exe文件运行时提示没有安装.NET Desktop Runtime 6.0.1.然后又尝试 ...

  3. C# 以管理员身份运行WinForm程序

    最近帮客户开发的WinForm客户端,部分在使用的过程中,会出现"系统文件找不到"的错误提示. 调试后,确定为程序在操作配置文件时,系统权限引起的错误,直接管理员权限运行就正常了. ...

  4. C# winform程序免安装.net framework在XP/win7/win10环境运行

    前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfr ...

  5. 脱离.Net Framework运行doNet程序的简单方法

    脱离.Net Framework运行doNet程序的简单方法(Console) 在.Net Framework下,你就算写一个小小的控制台程序,哪怕只有几K大小,我们必须要安装一个几十M的Framew ...

  6. 在VS.NET中使用clickonce技术开发Winform程序

    做为程序员,我们经常要面对的是对开发模式的选择,比如C/S模式和b/s模式.现在,很多人都似乎比较喜欢选择B/S模式进行web的开发,这其中的原因是很多的.但其中一点很重要的原因,那就是因为B/S开发 ...

  7. 【.Net Framework 体积大?】不安装.net framework 也能运行!?开篇叙述-1

    [声明:请尊重作者micro-chen的原创,抓文章,请添加来源和作者署名.作者保留追责权利.......] 注释:笔者只想通过抛砖引玉的方式,引导大家自己去实行,去探索,毕竟,微软的版本问题也不好说 ...

  8. 在虚拟机中 windows 2003 装.net framework 3.5 出现问题.

    错误信息: [11/27/09,08:52:50] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for componen ...

  9. 电脑怎样限制装软件 怎么限制软件运行

    电脑怎样限制装软件 怎么限制软件运行 电脑怎么限制装软件?   如果我们当前登录的用户是user或者guest组的成员,那么他就没有权限安装软件了. 解决办法 右键单击 我的电脑-管理-本地用户和组- ...

最新文章

  1. 通俗易懂:图卷积神经网络入门详解
  2. 对话微软黄学东:语音语言技术是镶在 AI 皇冠上的明珠
  3. 三大组件与三大优势 SUSE发布CaaS平台为哪般?
  4. ubuntu makefile交叉编译报错:file not recognized: file format not recognized
  5. json文件示例_Spark SQL - JSON数据集
  6. 微信小程序 欢迎界面开发的实例详解
  7. grub4dos命令引导自定义映像_DOS的常用命令二
  8. 如何处理error message Invalid parametertype used at function XXXX
  9. Docker 入门(3)Docke的安装和基本配置
  10. java integer == int_Java中int和Integer的区别详解
  11. WIN32_FIND_DATA
  12. mysql下载for linux 64_mysql官网下载linux版本安装包
  13. 【OCR技术】字符识别技术总览
  14. Source Insight 4.0黑色仿IDEA主题
  15. linux磁盘写入数据丢失,江湖救急!磁盘数据丢失的救星TestDisk
  16. Illustrator快捷键全集
  17. 计算机提示无法找到启动盘,怎么解决进入系统启动项窗口找不到U盘启动项-电脑自学网...
  18. TypeScript 安装及基础运行环境搭建 -- 原文来自博客园用户[长岛冰茶。](https://www.cnblogs.com/gaoyd/p/13529026.html)【未修改完成】】...
  19. c语言程序设计教学工作总结,C语言教学的工作总结范文
  20. mach3 丝杠的步进电机参数设置

热门文章

  1. java xml添加节点_Java对XML节点的修改、添加、删除 –By Xstream框架
  2. 16.PHP_Ajax模拟服务器登录验证
  3. LA3989女士的选择
  4. 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
  5. 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
  6. 【数理逻辑】谓词逻辑 ( 个体词 | 个体域 | 谓词 | 全称量词 | 存在量词 | 谓词公式 | 习题 )
  7. 【Android 应用开发】对Android体系结构的理解--后续会补充
  8. 巧用Mono.Cecil反射加载类型和方法信息
  9. 如何改变数据库存储引擎
  10. Git远程和分支管理