续 打包Winform的应用程序?急..

jieon 2009-04-23 11:49:11
我想打包一个Winfrom 应用程序,有什么办法可以在没装框架且没联网的机器上部署?
别说把框架也附带打包过去,那样会很大的,程序本身只是个小东西,我想问下有没有什么办法、
或则工具可以把它打包成一个小的安装程序且集成了框架。?
...全文
407 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liguoliangaccp 的回复:]
你看看这个吧,不知道能不能有用
本来想把用C#写的程序重写移植到win32平台的,但是感觉重写好累,而且不是很熟练,就想着能不能在未安装.net的机器上运行,有需就有求,嘎嘎,百度了一会,已经有各位老大们已经在讨论用飞信的虚拟机平台来进行加载运行.net程序了,于是自己就想着去尝试着去做一下。

(PS:飞信的就是在.net平台上开发的,不同的是飞信做了一个.net虚拟机的平台,这样就能在非……
[/Quote]
飞信做了个虚拟机平台?飞信远没有这个本事。

它在编译时使用了salamandar。不知道这个是什么,就还真的会联想为虚拟机平台上么?哦卖狗的。
jieon 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 findcaiyzh 的回复:]
引用 9 楼 jieon 的回复:

我用的是2008 能用.net 2.0 Redistributable package吗?


如果你没有用到.net 3.5的features的话,可以在项目属性中选择基于framework2.0.
就可以使用.net 2.0 Redistributable package了。
[/Quote]

这方法不错
wudaoyin 2009-04-24
  • 打赏
  • 举报
回复
等待微软改进,不然我们写的小程序每次都要打包,郁闷。。。
y9313 2009-04-24
  • 打赏
  • 举报
回复
顶下 学习个
貌似没有什么好的解决办法
宝_爸 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jieon 的回复:]

我用的是2008 能用.net 2.0 Redistributable package吗?
[/Quote]

如果你没有用到.net 3.5的features的话,可以在项目属性中选择基于framework2.0.
就可以使用.net 2.0 Redistributable package了。
ak8800 2009-04-23
  • 打赏
  • 举报
回复
那就换一个开发工具得了,winform的开发工具那么多,还非得用vs码?
linjiancun 2009-04-23
  • 打赏
  • 举报
回复
关注中!~
blestcc 2009-04-23
  • 打赏
  • 举报
回复
不包進去沒辦法的。
liguoliangaccp 2009-04-23
  • 打赏
  • 举报
回复
你看看这个吧,不知道能不能有用
本来想把用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的虚拟机
jieon 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ak8800 的回复:]
如果不打包framework好像更麻烦,还不如直接打包了呢
[/Quote]
一个小程序几百K 把框架打上就几百M啊....这哪行..
ak8800 2009-04-23
  • 打赏
  • 举报
回复
如果不打包framework好像更麻烦,还不如直接打包了呢
jieon 2009-04-23
  • 打赏
  • 举报
回复
来人啊~~~~~~~~~~~~~~~~~·
jieon 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyq11 的回复:]
不打包框架,用飞信虚拟机和MONO实现部署
[/Quote]

能说下解决方案吗
jieon 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 findcaiyzh 的回复:]
最好还是将framework打包进去。

没有那么大吧,.net 2.0 Redistributable package 22.4 M

http://www.microsoft.com/downloads/details.aspx?familyid=79BC3B77-E02C-4AD3-AACF-A7633F706BA5&displaylang=en
[/Quote]
我用的是2008 能用.net 2.0 Redistributable package吗?
wuyq11 2009-04-23
  • 打赏
  • 举报
回复
不打包框架,用飞信虚拟机和MONO实现部署
宝_爸 2009-04-23
  • 打赏
  • 举报
回复
最好还是将framework打包进去。

没有那么大吧,.net 2.0 Redistributable package 22.4 M

http://www.microsoft.com/downloads/details.aspx?familyid=79BC3B77-E02C-4AD3-AACF-A7633F706BA5&displaylang=en

110,586

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧