您的位置:首页 > 其它

判断是否安装.net Framework环境,未安装则使用VMDotNet来启动主程序

2010-02-24 20:56 447 查看
方法一:

下面先来简单说明一下VMDotNet文件夹吧,在这个文件夹之下有一个v2.0.50727文件夹,很明显是.NET
FRAMEWORK的版本号啦,进入这个文件夹,里面有一个FetionVM.exe的可执行文件(飞信的图标),这个便是我们要用到的虚拟机文件了。其
它文件我们不用考虑。这个程序可以带入一个参数,即要在此虚拟环境下运行的程序的路径。形如FetionVM.exe
C:/1.exe,也可以使用相对路径:FetionVM.exe
1.exe,当然这样要求两者在同一目录下啦。这里顺便要再说一下VMDotNet.log这个文件,这里记录了在调用FetionVM.exe时的错误
信息,主要是路径不对,找不到对应的程序。在了解了这个文件夹之后,我们可以动手开始做啦!

把这个文件夹复制到你的项目的DEBUG目录下,我的已有项目名为PicProcessor,生成的可执行文件为,当然你也可以视情况而定了,如果放别的
地方就应该注意一下路径就好了。

在这里我们需要再新建一个C#应用程序项目,我把它命名为PicStart,把FORM1.CS删除,或者直接新建一个控制台程序,在
Program.cs中写入以下代码:

using System;

using System.Collections.Generic;

using
System.Windows.Forms;

namespace PicStart

{

static class Program

{

/// <summary>

/// 应用程序的主入口点。

///
</summary>

[STAThread]

static void Main()

{

//下面是调用外部程序的代码

System.Diagnostics.ProcessStartInfo Info = new
System.Diagnostics.ProcessStartInfo();

Info.FileName =
"VMDotNet//v2.0.50727//FetionVM.exe"; //这里是你要调用到的外部程序

Info.Arguments = "PicProcessor.exe";
//调用外部程序的参数,这里是图片处理项目的可执行文件,注意不是现在这个项目的可执行文件

System.Diagnostics.Process Proc;

try

{

//

//启动外部程序

//

Proc =
System.Diagnostics.Process.Start(Info);

}

catch (System.ComponentModel.Win32Exception e)

{

Console.WriteLine("系统找不到指定的程序文件。/r{0}", e);

return;

}

}

}

}

在做完了这个项目以后我们生成此项目,这个时候我们就可以开始制作程序的安装文件了。

以前我们利用VS2005做安装包的时候可以选择把.NET
FRAMEWORK集成进去,但现在我们不用了,请大家把相应的选项全部去掉,还不会使用VS2005安装和部署功能的朋友请到此网址去看一下。http://www.vs2005.com/Setup/205/1/default.aspx

我们把PicProcessor和PicStart项目都添加进新建的安装和部署项目Setup中来,把程序启动的快捷方式全部设为
PicStart.exe就可以了,具体的操作方法在上面的链接里有。然后开始生成安装包,生成的安装包如果选择大小优先的话,VMDotNet会占用大
概10Mb左右的空间,然后加上你程序的大小就是这个安装文件的大小了,比以前20多MB的.Net
Framework小多了,而且安装速度也要快的多,这样程序在没有.Net
Framework的机器上也能运行了,大家都试试吧,有什么问题可以给我留言。每天晚上一般我都会上线,会及时给大家回复的!

vmdotnet实际上是把Remotesoft.DOTNET.Linker打包滴

---------------------------------------------------------------------------------------------------------------------------------

方法二:

从四年前刚学C#时就一直想找到一种方法可以让.Net程序在未安装framework的电脑上运行,但一直没有找到真正可用的。虽然有些
公司发布了可以将.net代码编译成navtive代码以脱离.net环境运行,如Remotesoft DOTNET Linker,Xenocode

Postbuild等,但一直没有破解版,用它们编译的程序每次运行会添出个版权信息。最近偶然发现一种方法可以做到真正使程序脱离.net环境运行且没
有任何版权信息添出,现将使用方法、源代码、测试程序发布于此: îëñiÉfó‘bbs.szblogs.comtìyD¯( ¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

请首先在文章末尾下载测试程序,是一个用C#做的串口工具,下载解压后有两个文件夹(FrameWork和APP)和一个程序
(串口工具.exe),在APP文件夹下有一个名为9527.exe的程序,这个是C#真正的“串口工具.exe”,而主目录下的串口工具.exe只是一
个Loader程序,它运行后首先判断电脑上有没有安装framework,若有,则直接启动APP下的9527.exe程序;若无,则通过
framework虚拟机(FrameWork下的VM.exe(其实是飞信框架里的FetionVM.exe,修改了它的图标和版权,想改成其它的大家
可以用VC改一下,有网友强列要求指出这一点,想不明白为什么,呵呵,让指出就指出吧,还要求指出调用的方法,,其实我连源程序都公布了,用说的这么明白
吗))启动9527.exe程序。Loader程序不会打开任何窗口,并在启动真正应用程序后立即退出。Loader程序主函数(VC6.0编写)的代码
如下: îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

主函数:îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7



int
APIENTRY WinMain(HINSTANCE hInstance,



HINSTANCE hPrevInstance,



LPSTR lpCmdLine,



int
nCmdShow)





...
{



TCHAR fwVersion[VERSION];



if
(CheckRegistryKeyExistance(fwVersion))





...
{



if
(CompareFWVersions(fwVersion,
"
2.0
"
))
//
最低版本要求2.0





...
{



RunApplication(
"
.//app//9527.exe
"
);
//
直接运行



}



else





...
{



//
应用程序放在APP目录下,要启动的程序的名字为9527.exe,



//
9527周星弛在《唐伯虎点秋香》的代号,呵



RunApplication(
"
.//FrameWork//VM.exe /
"
.//app//
9527
.exe/
""
);
//
通过虚拟机运行



}



}



else





...
{



RunApplication(
"
.//FrameWork//VM.exe
/
"
.//app//
9527
.exe/
""
);
//
通过虚拟机运行





}



return

0
;



}

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

判断是否安装的代码就不贴出来了,可以在文章末尾下载整个VC6的工程文件看。 îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

下面总结一下如何使用: îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

1. 下载我的例子程序 îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

2. 清空APP下的所有文件 îëñiÉfó‘bbs.szblogs.comtìyD¯( ¤7

3.
把你自已的.net可执行程序和相关文件全部复制到APP下,并将可执行程序的名字改为9527.exe
(不喜欢这个名字可以修改Loader程序重新编译) îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

4.
把主目录的“串口工具.exe"名字改成任何你想要的名字。(要改图标的话,建议下载我的Loader源程序,修改后重新编译) îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

îëñiÉfó‘bbs.szblogs.comtìyD¯(
¤7

大功告成,拿到一台没装.net的电脑上试试吧。祝好运。

相关下载:

Loader程序源代码

http://files.cnblogs.com/cctvfan90/vmloader.rar

其实最简单的方式就是:下载移动飞信—>将VMDotNet文件夹和Fetion.exe
提取出来放到你的程序运行目录—>将自己程序的EXE重命名为FetionFx.exe
,Fetion.ext名字可改为自己程序的,数据库可放置到.../VMDotNet/v2.0.50727/下,引用的dll放置到运行目录即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐