回 帖 发 新 帖 刷新版面

主题:怎样在没装.net的机器上运行exe?

我用winform做了个计算器,把整个工程拷到另外一台没有装.net的机器上,打开exe时就报错,baidu里说要装SDK,如果用.net做出的应用程序都要求其他机器装SDK,那不完了?

回复列表 (共11个回复)

沙发

需要部署一下

板凳

什么机器没装.net啊?

没装.net一定运行不了.net下开发的程序啊

3 楼

那怎么办阿?用.net做出的东西根本没有兼容性,怎么解决.net开发的东西在其他机器上运行?

4 楼


xcopy部署是吧一组文件复制到目标计算机上的一个文件夹中,然后在客户机上执行应用程序

5 楼

把.net framework安装上就可以了

6 楼

不安装部署的话,借用飞信的虚拟机运行程序.
帮你找了一篇文章



不装.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 楼


有两种方式:
1.在 VS上发布部署就OK了 ;
2.把那个文件编译成windows安装程序.

8 楼

没有办法运行,你可以将 Framework 在与应用程序一起打包发布。就可以了

9 楼

做一个安装包就ok了,不过要在对方电脑上安装一下。

10 楼


这回答是对的

我来回复

您尚未登录,请登录后再回复。点此登录或注册