主题:怎样在没装.net的机器上运行exe?
haierok2003
[专家分:460] 发布于 2009-04-10 16:30:00
我用winform做了个计算器,把整个工程拷到另外一台没有装.net的机器上,打开exe时就报错,baidu里说要装SDK,如果用.net做出的应用程序都要求其他机器装SDK,那不完了?
回复列表 (共11个回复)
板凳
akey307 [专家分:540] 发布于 2009-04-10 21:40:00
什么机器没装.net啊?
没装.net一定运行不了.net下开发的程序啊
3 楼
haierok2003 [专家分:460] 发布于 2009-04-11 08:36:00
那怎么办阿?用.net做出的东西根本没有兼容性,怎么解决.net开发的东西在其他机器上运行?
4 楼
lw926wcl115 [专家分:20] 发布于 2009-04-14 22:55:00
xcopy部署是吧一组文件复制到目标计算机上的一个文件夹中,然后在客户机上执行应用程序
5 楼
有问有答 [专家分:2310] 发布于 2009-04-21 21:51:00
把.net framework安装上就可以了
6 楼
taintain1984 [专家分:380] 发布于 2009-05-05 16:09:00
不安装部署的话,借用飞信的虚拟机运行程序.
帮你找了一篇文章
不装.net Framework 也能运行WinForm程序,用飞信(转)2008-06-19 19:07本来想把用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的虚拟机。
7 楼
hupeng0724 [专家分:0] 发布于 2009-05-11 13:05:00
有两种方式:
1.在 VS上发布部署就OK了 ;
2.把那个文件编译成windows安装程序.
8 楼
linxuanxu [专家分:9360] 发布于 2009-05-13 16:25:00
没有办法运行,你可以将 Framework 在与应用程序一起打包发布。就可以了
9 楼
674336149 [专家分:0] 发布于 2009-05-24 02:40:00
做一个安装包就ok了,不过要在对方电脑上安装一下。
我来回复