正在加载

FetionVM:摆脱DotNetFW的镣铐

| 2008年5月13日星期二

学.Net3年了,一直苦苦的寻找能让自己编写的几百KB,或者几MB的小东西离开20M的.Net Framework的方法。已知的方法都不是十分的合适,比如用Xenocode、Salamander .Net Linker这类东西,不是破解吗难找,就是不好用。现在终于找到了一个非常好用的方法~那就是飞信!!!

感谢中国电信,感谢飞信,感谢FetionVM.exe~~~





具体方法非常简单,找个飞信,安装或者找个已经安装好的飞信,然后把VMDotNet复制出来,然后用这个里面的FetionVM.exe运行你的C#程序,例如FetionVM.exe a.exe这样,你的C#程序就可以在没有安装.NetFramework的电脑里面运行了。

VMDotNet文件夹总共大小压缩之后不到8M,甚至6M。

目前我发现更好的方式是:可以这么做,写一个Win32的c++程序,或者是Delphi之类的,能够直接生成非托管代码的语言(C#、Java就不行),然后去调用这个FetionVM.exe,具体方法很多了,CreateProcess啊,WinExec啊,还有ShellExecute等等都可以做到的。

如果觉得这样麻烦,写个批处理,或者建立一个到FetionVM的快捷方式,把你的程序作为参数传过去。

最无耻的办法~直接把FetionVM改个名,改图标(有点过于卑鄙了)直接作为你的程序的启动方式

如果你程序中引用了其他.Net类库,例如System.Data.dll或者System.ServiceProcess.dll之类的,需要把你的类库从.Net的安装目录里面Copy出来,放到System目录下面,这样就可以运行了。

如果你运行之后你的程序没有启动,请查看VMDotNet.log,这个是错误日志里面会有提示信息的,比如找不到EXE或者找不到某个类库相关的DLL等等

目前发现的问题

当你的程序中用到你的程序的启动路径时,比如Application.StartupPath,这个时候你的程序的启动路径会变成FetionVM的路径,这个很无奈,因为你毕竟是启动的人家,而不是你的程序本身。比如我的Service Master就会找不到数据库。。。。

希望大家玩的愉快,我的ServiceMaster 系统服务优化专家的WithDotNetVM版本很快就会Release了。

题外话,虽然MS一直不遗余力的推销.Net可是仍然有很多人在用没有.Net Framework的XP(中国尤为明显),没有人愿意为了一个1M的软件装一个20M的Framework,而FetionVM总共只需要10M不到,还是很节俭的。现在写一些小软件还是很需要这个东西的,但是企业级的应用就直接装上Framework了,客户也不会怎么反感的。

如果你喜欢本文,把它分享到 Twitter / 校内 / 鲜果 / Digg
或者把它收藏到 Delicious

0 comments: