当前位置:编程学习 > C#/ASP.NET >>

如何使得.NET生成的EXE文件安装时无需安装.NET framework??

如何使得.NET生成的EXE文如何使得.NET生成的EXE文件安装时无需安装.NET framework??件安装时无需安装.NET framework?? --------------------编程问答--------------------


     除非那台机器上已经安装了.NET 。或者使用虚拟环境运行,否则是必须安装.NET framework的。

下面是我找的:


之前看到有用别的方法来实现的,但我还是选择了现在比较流行的软件飞信中带的VMDotNet,也就是所谓的.NET FRAMEWORK虚拟机吧。相信有很多人也已经看过相关文章了,但是对于新手我还是再提一下,在你的飞信的安装目录下有一个VMDotNet文件夹,这 个就是我们要用的最主要的内容了,先把它COPY出来吧! 

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

 在这里我们需要再新建一个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集成进去,但现在我们不用了,请大家把相应的选项全部去掉,

PicStart程序主函数(VC6.0编写)的代码如下:
主函数:
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\\PicProcessor.exe");//直接运行
 }
 else
 {    
 //应用程序放在APP目录下,要启动的程序的名字为PicProcessor.exe,
 RunApplication(".\\FrameWork\\FetionVM.exe\".\\app\\PicProcessor.exe\"");//通过虚拟机运行
 }
 }
 else
 {
 RunApplication(".\\FrameWork\\VM.exe \".\\app\\PicProcessor.exe\"");//通过虚拟机运行
 
 }
 return 0;
}

--------------------编程问答-------------------- 怎么又问这个问题呢
顶一楼 --------------------编程问答-------------------- 必须安装 .net --------------------编程问答-------------------- 不安装,.net是不能运行的.......
....
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,