惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
美团技术团队
N
Netflix TechBlog - Medium
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
The Cloudflare Blog
量子位
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - Bireyou

Visual Studio 更改护眼颜色 修复SQL中的孤立账户 在SQL中查看文件组中有哪些表 出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决方法 Ext.Net开发过程中问题集锦 SQL Server 2005 中重建Master数据库 ASP.NET实现下载的中文文件名乱码处理 - Bireyou - 博客园 NUnit2.0详细使用方法 如何配置和部署安全的.NET三层应用 ASP.NET如何在客户端调用服务端代码 ASP.NET 2.0 绑定高级技巧 - Bireyou SourceGrid 2.0 认识ASP.NET配置文件Web.config 加密Web.config中的信息 DataGrid中创建复杂表头方法 showModalDialog()、showModelessDialog()详解 每一项都是js中的小技巧,但十分的实用! 在ASP.NET页面间传递任意数据的方法与实例 javascript函数库
把.NET程序部署到没有安装.NET Framwork的机器上
Bireyou · 2005-12-07 · via 博客园 - Bireyou

出处:http://msdnportal.csdn.net/Read.aspx?C=6&S=0e328a9d-2743-4d92-90e9-3a7ca6ba9130
              作者:

日期:2004-08-03
摘要:本文讨论了如何使用Windows Installer技术发布.NET程序,以及如何使用native代码判断目标机器上是否安装有.NET Framework; 如果没有,将自动安装.NET Framework然后安装作者自己的.NET程序。

制作自己的安装程序

在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环境的机器上。


作者

张广辉

2002年10月22日


版权声明

凡在本网站发表的文章,作者必须保证是原创文章;如果不是原创文章,由此带来的版权纠纷由作者自己承担。微软有义务对本站点发表的文章进行审核,但您需要考虑这些文章的使用风险。本站点仅提供一个用户相互交换技术信息和学习的园地,并不对来自社区用户的技术文章承担任何风险。