把.NET程序部署到没有安装.NET Framwork的机器上

程序

目录

本文内容
制作自己的安装程序
发布.NET Framework
制作自己的native安装程序
使用方法
总结
作者

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

本文内容

1. 使用VS.NET来制作安装程序。

2. 如何把.NET Framework 部署到目标机器。

3. 如何使用Native代码把.NET Framework和自己的安装程序制作为一个统一的安装程序。该程序做到如果目标机器上没有.NET Framework,将自动安装.NET Framework然后再自动安装作者自己的程序。

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

制作自己的安装程序

在VS.NET中,我们可以通过建立"Setup and Deployment Projects"项目,非常灵活方便的把自己的.NET程序制作为Windows Installer文件。比如,我们可以很方便的定制下面这些选项:

1. 是否在桌面上放置快捷方式。

2. 注册自己的文件类型,可以通过双击该文件来使用自己的程序打开。

3. 注册表的处理

在下面的MSDN站点,我们可以获得在VS.NET中通过Setup and Deployment Projects来制作自己的安装程序的示例:

http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconDeploymentScenarios.asp

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

发布.NET Framework

.NET Framework 1.0提供一个用来重新部署.NET的exe文件:Dotnetfx.exe. 它包含了Common Language Runtime和其它.NET程序运行时必不可少的内容。

我们可以从下面的站点下载该exe文件:

http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/829/msdncompositedoc.xml

同时,我们也可以在VS.NET安装CD或者DVD中找到该文件。

我们可以通过多种方式来通过运行Dotnetfx.exe把.NET Framework部署到目标机器上:

1. 通过Microsoft Systems Management Server部署。

2. 通过Active Directory部署。

3. 使用第三方工具。

具体的信息,我们可以参阅下面的文章:

http://msdn.microsoft.com/library/en-us/dnnetdep/html/redistdeploy.asp

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

制作自己的native安装程序

如果我们要把自己的.NET程序发布到目标机器上,同时我们不确定该目标机器是否已经安装了.NET Framework, 那我们就需要自己设计一段unmanaged代码,来判断目标机器是否安装了.NET Framework, 如果没有,则运行Dotnetfx.exe安装.NET Framework, 然后利用Windows Installer安装自己的程序。

在MSDN的下面网页上,我们可以获得一个使用unmanaged C++实现的安装程序和它的源代码:

http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/830/msdncompositedoc.xml

1. 在CSettings class中,通过读取"settings.ini",获得您自己的MSI安装文件和dotnetfx.exe的路径,以及其他您自己的设置。(比如.NET Framework的语言版本)

GetCaptionText(void)

GetDialogText(void)

GetErrorCaptionText(void)

GetIniName(void)

GetProductName(void)

Parse()函数用来解析settings.ini文件。

2. 在Main.cpp文件中,全局函数FxInstallRequired()判断是否要在目标机器上安装.NET Framework. FxInstallRequired()会检测下面的注册表键值和dotnetfx.exe的版本和语言设置。

HKLM\SOFTWARE\Microsoft\.NETFramework\policy\v1.0

3.如果需要安装.NET Framework, 在全局函数ExecCmd()中调用下面的命令silent安装dotnetfx.exe:

dotnetfx.exe /q:a /c:"install /l /q"

4。 在ExecCmd()全局函数中调用下面的命令安装您自己的MSI文件:

msiexec /i <your MSI file> REBOOT=ReallySuppress

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

使用方法

如果我们使用上面的native代码作为自己的安装程序,那么我们可以通过下面的步骤把自己的.NET程序和它结合在一起:

1.把您自己的.NET程序制作成为Windows Installer (.MSI)文件。

2.打开"settings.ini"文件,在"Msi" key中设置您自己的.NET程序的MSI文件路径和文件名;在"FxInstallerPath" Key中,设置dotnetfx.exe的路径。具体的参数信息,您可以从下面文章中得到:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/html/redistdeploy.asp

3. 把"setup.exe", "settings.ini", "dotnetfx.exe"和您自己的MSI安装文件,发送到目标机器上,然后运行"setup.exe", 安装程序会自动检测是否有.NET Framwork, 如果没有,将首先运行dotnetfx.exe。

通过上述步骤,您可以将自己的.NET程序成功的部署到没有安装.NET Framwork环境的机器上。

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

总结

通过上述步骤,您可以将自己的.NET程序成功的部署到没有安装.NET Framwork环境的机器上。

下面是CSDN上的开发指南

结合应用程序使用 Setup.exe 安装引导程序示例

由 Setup.exe 安装引导程序示例执行的操作是自动的。但是,要使 Setup.exe 可以使用应用程序,您必须创建一个自定义 Settings.ini 文件,其中提供应用程序相关的必要信息。此外,建议您部署的安装程序带有自述文件,通过该文件为用户提供安装应用程序和 Dotnetfx.exe 的最低配制要求。以下主题提供了有关创建 Settings.ini 和自述文件的详细信息。

创建 Settings.ini 文件

Setup.exe 安装引导程序示例使用外部文件 Settings.ini 确定以下内容:

· Dotnetfx.exe 和宿主应用程序的位置。

· 要检查的 .NET Framework 的语言版本。

· 要用于 Setup.exe 对话框的自定义字符串。

Settings.ini 的默认位置与 Setup.exe 在相同文件夹中。您负责创建 Settings.ini 文件,该文件使 Setup.exe 安装引导程序示例可与您的应用程序配合使用。您可以复制随 Setup.exe 安装引导程序示例提供的 Settings.ini 文件,然后根据需要编辑该文件,为应用程序指定正确值。

指定 Dotnetfx.exe 和宿主应用程序的位置

Setup.exe 安装引导程序示例要求 Dotnetfx.exe 和宿主 .NET Framework 应用程序位于相对于 Setup.exe 的已知位置。Setup.exe 安装引导程序示例会使用外部文件 Settings.ini 来确定 Dotnetfx.exe 和宿主应用程序的位置。您可以复制随示例提供的 Settings.ini 文件,然后编辑该文件,以指向 .NET Framework 宿主应用程序和 Dotnetfx.exe 的位置。

以下 Settings.ini 文件示例说明了如何指向各种不同位置(相对于 Setup.exe 的位置而言)的宿主 .NET Framework 应用程序和 Dotnetfx.exe 的 Windows 安装程序包(.msi 文件)。

以下示例 Settings.ini 文件指向与 Setup.exe 位于同一文件夹的 .NET Framework 应用程序 mySetup.msi 和 Dotnetfx.exe 的 Windows 安装程序包。单引号“'”用于注释未自定义的行。

[Bootstrap]

Msi=mySetup.msi

'LanguageDirectory=

ProductName= My Application

'DialogText=

CaptionText=My Application

ErrorCaptionText= My Application Error

FxInstallerPath=c:\myProjectFolder\

以下示例 Settings.ini 文件指向与 Setup.exe 不在同一位置、位于网络共享的 .NET Framework 应用程序 mySetup.msi 和 Dotnetfx.exe 的 Windows 安装程序包。

[Bootstrap]

Msi=\\myNetworkShare\myProjectFolder\mySetup.msi

'LanguageDirectory=

ProductName=My Application

'DialogText=

CaptionText=My Application

ErrorCaptionText= My Application Error

FxInstallerPath=\\myNetworkShare\myProjectFolder\

以下示例 Settings.ini 文件指向与 Setup.exe 位于同一计算机但不同文件夹的 .NET Framework 应用程序 mySetup.msi 和 Dotnetfx.exe 的 Windows 安装程序包。

[Bootstrap]

Msi=c:\myInstallerFiles\mySetup.msi

'LanguageDirectory=

ProductName= My Application

'DialogText=

CaptionText=My Application

ErrorCaptionText= My Application Error

FxInstallerPath=c:\myExecutables\

以下示例 Settings.ini 文件指向与 Setup.exe 位于同一 CD 上不同文件夹的 .NET Framework 应用程序 mySetup.msi 和 Dotnetfx.exe 的 Windows 安装程序包。

[Bootstrap]

Msi=myInstallerFiles/mySetup.msi

'LanguageDirectory=

ProductName= My Application

'DialogText=

CaptionText=My Application

ErrorCaptionText= My Application Error

FxInstallerPath=myExecutables/

指定语言版本

如果您希望 Setup.exe 检查 .NET Framework 的内部版本号和语言版本,必须在 Settings.ini 文件中指定语言的区域性名称。如果没有指定区域性名称,默认情况下 Setup.exe 将检查是否有英语语言版本。

下表列出了可用的语言版本和要在 Settings.ini 文件中指定的相应区域性名称。区域性名称不区分大小写。

语言
区域性名称

中文(简体) chs

中文(繁体) cht

法语 fr

德语 de

意大利语 it

日语 ja

朝鲜语 ko

西班牙语 es

以下示例 Settings.ini 文件指示 Setup.exe 检查 Dotnetfx.exe 的法语版本。

[Bootstrap]

Msi=mySetup.msi

LanguageDirectory=fr

ProductName= My Application

'DialogText=

CaptionText=My Application

ErrorCaptionText= My Application Error

FxInstallerPath=c:\myProjectFolder\

自定义用于 Setup.exe 对话框的字符串

您可以在 Settings.ini 文件中编辑以下变量,以自定义 Setup.exe 对话框中显示的字符串。

ProductName

指定 Setup.exe 将安装的 .NET Framework 应用程序的名称。您指定的产品名用于自定义启动 Setup.exe 后显示的对话框中的文本。例如,如果您将 ProductName 指定为“我的应用程序”,则对话框文本为“要启动‘我的应用程序安装程序’,请单击‘确定’。要退出而不进行安装,请单击‘取消’”。

如果您没有自定义 CaptionText 变量,ProductName 还用于自定义 Setup.exe 启动后显示的对话框的标题栏。例如,如果您将 ProductName 指定为“我的应用程序”,则标题栏显示“我的应用程序安装程序”。如果您同时自定义 ProductName 和 CaptionText,CaptionText 用于自定义此对话框中的标题栏文本。

ProductName 还用于自定义完成安装应用程序时显示的成功对话框中的标题栏文本。如果您没有自定义 ProductName,则显示默认文本“应用程序安装程序”。

DialogText

指定要在 Setup.exe 启动后显示的对话框中显示的自定义文本。如果您没有自定义 DialogText,则显示默认文本“要启动‘应用程序安装程序’,请单击‘确定’。要退出而不进行安装,请单击‘取消’”。

CaptionText

指定要在 Setup.exe 启动后出现的对话框的标题栏中显示的自定义文本。如果您没有自定义 CaptionText,则显示 ProductName。如果没有自定义 ProductName,则显示默认文本“应用程序安装程序”。

ErrorCaptionText

指定要在 Setup.exe 错误对话框的标题栏中显示的自定义文本。如果您没有自定义 ErrorCaptionText,则显示默认文本“应用程序安装程序错误”。

为安装程序创建自述文件

建议您分发的安装程序带有自述文件,在该文件中列出对可成功运行安装程序的计算机的最低配置要求。根据安装前要求,至少列出装有 Internet Explorer 5.01 或更高版本的 Microsoft Windows 98 或更高版本。还应列出 MDAC 2.6 或更高版本,并注明它不是安装所需的,而是提供数据访问权的 .NET Framework 应用程序所需的。有关用于安装 Dotnetfx.exe 的最低配置要求的详细信息,

时间: 2024-08-04 11:40:07

把.NET程序部署到没有安装.NET Framwork的机器上的相关文章

偷偷的问一下:用VS2010编写的C#程序,在没有安装.NET的XP操作系统上是不是真的不能运行?

问题描述 操作系统是XP的,没装什么.NET请问:用VS2010编写的C#程序,是不是真的不能运行?要运行的话,需要在XP上装.NET吗? 解决方案 解决方案二:必须安装.netframework相应版本解决方案三:可以不用装,不过要用虚拟化工具来整解决方案四:需要装.netframework的对应版本看你用什么版本开发的就装什么版本,一般2010默认是4.0吧不用装VS解决方案五:是的,必须安装,.net版本不低于你开发环境的版本即可,最好一致.解决方案六:引用4楼zixingcheng_的回

在安装了虚拟机的机器上安装了sniffer pro可以实现发包截包么?

问题描述 需要实现两机的收包截包,没有两台机器,只好在虚拟机中实现.主机虚拟机都是xp系统,用的是同一个网卡,我每次手动设置ip,且在同一网段,snifferpro是4.7版本,但是主机安装不了,所以在虚拟机中做收发报,问题是:1.为什么主机内安装不了sniffer,只能在虚拟机种安装吗?即安装条件;2.此实验中主机与虚拟机正确的连网方法?有人说要用到虚拟网卡,但是我用的是visualPC,没有虚拟网卡;3.怎样用sniffer伪造其他ip发包,因为4.7版好像是自动填充ip报头,自动加入本机的

我的程序中用了powertcp 中的 snmp 组件,但如何让我在没有安装powertcp的机器上运行?

问题描述 1.我的程序中用了powertcp中的snmp组件,但如何让我在没有安装powertcp的机器上运行?,现在编译的c#程序在安装了powertcp的机器上能用,可是一到没有安装的机器上就用不了了,请教.2.如果我不用powertcp组件,用c#开发snmpagent有什么开源控件可以用吗?提供一个下载地址和示例,不胜感激. 解决方案 解决方案二:mark解决方案三:有没有详细的?解决方案四:顶

如何把VS2008上编的debug、release程序在没装VS的xp机器上运行

用VS2008 SP编写的MFC程序,拷贝到其他没装VS2008的机器上直接运行,肯定是不行的.即使选择静态链接MFC,有时候系统还是会提示"应用程序配置不正确".这是因为程序中可能不止用到了9.0版本MFC,还可能有ATL.CRT.OPENMP等.在自己的机器上运行时,系统会到"C:/WINDOWS/WinSxS/"文件夹查找相应的库,这个文件夹里包含了所有安装过的版本的运行库和清单文件.如果只找9.0版本的库和清单文件,也可以到"C:/Program

在已安装Windowns XP机器上再安装Windows 2000

由于Windows XP在Windows 2000之后发布,通常软件都不会与将来的版本兼容,如果由于某些原因在已成功安装Windowns XP的机器上再安装Windows 2000,后者将会覆盖硬盘的主引导扇区及系统盘目录下的系统文件,造成之前安装的Windows XP无法启动.通常会报: Starting Windows... Windows 2000 could not start because the following file is missing or corrupt:\WINDO

在.net安装程序部署SQL Server数据库

server|程序|数据|数据库 目录 l 摘要l 一般安装程序的制作l 在安装程序中部署SQL Server数据库1. 通过调用osql来执行数据库脚本文件2. 通过把脚本文件作为资源文件载入3. 通过sp_attach_db来创建数据库l 总结 摘要一个项目完成之后,安装程序的制作是一个必要的过程.如果需要部署数据库,则使安装程度的制作变得比较麻烦.使用visual studio.net可以非常方便的制作应用程序以及部署程序中需要的数据库.本文介绍了如何使用visual studio.net

开发和部署Pocket PC安装程序

应用Microsoft .NET Compact Framework 1.0 Microsoft Visual Studio .NET 2003 概要 了解如何创建独立的 .msi 文件,该文件从桌面运行以便将应用程序安装到不同的 Pocket PC 设备上.开发过程是自动化的,所以能轻松创建和打包所需组件到一个 .msi 文件.示例代码用 C# 和 VB.NET 语言编写. 内容提要 概述 部署 卸载 开发 开发过程自动化 概述 下面所列为开发和部署 Pocket PC 应用程序的要点: Po

WebSphere反向投资者: 用于加速应用程序部署的选项

在每篇专栏文章中,"WebSphere 反向投资者"将回答问题.提供指导和讨论与 WebSphere 产品相关的基础主题,经常会给出与流行的看法相悖的经过实践验证的建议. 送给您的礼物 又到假日了,这意味着每个人都在忙着完成当年的项目.购物,以及各种各样的传统年终任务.所有这些活动可能意味着您会欢迎任何节省时间的技巧,因为您可能有太多的事情需要处理,但是却只有太少的时间去全部完成.为了尽自己的一份力量帮助您提高效率,我将在本月的专栏中花些时间提供一些用于加速 IBM WebSphere

Oracle9iAS下J2EE应用程序部署

j2ee|oracle|程序 Oracle 9iAS J2EE 应用程序发布和配置安装配置应用服务器操作系统安装Oracle 9iAS 9.0.2 企业版①       Oracle 9i Application Server Infrastructure : 其中:Oracle 9iAS Infrastructure Instance Name :ora9ias_is:口令:ora9ias 安装目录:d:\Ora9is ②       Oracle 9iAs Application Serve