制作自己的安装程序
在VSNET中我们可以通过建立Setup and Deployment Projects项目非常灵活方便的把自己的NET程序制作为Windows Installer文件比如我们可以很方便的定制下面这些选项
.是否在桌面上放置快捷方式
.注册自己的文件类型可以通过双击该文件来使用自己的程序打开
.注册表的处理
在下面的MSDN站点我们可以获得在VSNET中通过Setup and Deployment Projects来制作自己的安装程序的示例us/vsintro/html/vbconDeploymentScenariosasp
发布NET Framework
NET Framework 提供一个用来重新部署NET的exe文件Dotnetfxexe 它包含了Common Language Runtime和其它NET程序运行时必不可少的内容
我们可以从下面的站点下载该exe文件?url=/MSDNFILES////msdncompositedocxml
同时我们也可以在VSNET安装CD或者DVD中找到该文件
我们可以通过多种方式来通过运行Dotnetfxexe把NET Framework部署到目标机器上
.通过Microsoft Systems Management Server部署
.通过Active Directory部署
.使用第三方工具
具体的信息我们可以参阅下面的文章
us/dnnetdep/html/redistdeployasp
制作自己的native安装程序
如果我们要把自己的NET程序发布到目标机器上同时我们不确定该目标机器是否已经安装了NET Framework 那我们就需要自己设计一段unmanaged代码来判断目标机器是否安装了NET Framework 如果没有则运行Dotnetfxexe安装NET Framework 然后利用Windows Installer安装自己的程序
在MSDN的下面网页上我们可以获得一个使用unmanaged C++实现的安装程序和它的源代码
?URL=/code/sampleasp?url=/msdnfiles////msdncompositedocxml
.在CSettings class中通过读取settingsini获得您自己的MSI安装文件和dotnetfxexe的路
径以及其他您自己的设置(比如NET Framework的语言版本)
GetCaptionText(void)
GetDialogText(void)
GetErrorCaptionText(void)
GetIniName(void)
GetProductName(void)
Parse()函数用来解析settingsini文件
.在Maincpp文件中全局函数FxInstallRequired()判断是否要在目标机器上安装NET Framework FxInstallRequired()会检测下面的注册表键值和dotnetfxexe的版本和语言设置
HKLM\SOFTWARE\Microsoft\NETFramework\policy\v
.如果需要安装NET Framework 在全局函数ExecCmd()中调用下面的命令silent安装dotnetfxexe dotnetfxexe /q:a /c:install /l /q
.在ExecCmd()全局函数中调用下面的命令安装您自己的MSI文件msiexec /i REBOOT=ReallySuppress
使用方法
如果我们使用上面的native代码作为自己的安装程序那么我们可以通过下面的步骤把自己的NET程序和它结合在一起
.把您自己的NET程序制作成为Windows Installer (MSI)文件
.打开settingsini文件在Msi key中设置您自己的NET程序的MSI文件路径和文件名在FxInstallerPath Key中设置dotnetfxexe的路径具体的参数信息您可以从下面文章中得到
?url=/library/enus/dnnetdep/html/redistdeployasp
把setupexe settingsini dotnetfxexe和您自己的MSI安装文件发送到目标机器上然后运行setupexe 安装程序会自动检测是否有NET Framwork 如果没有将首先运行dotnetfxexe
总结
通过上述步骤您可以将自己的NET程序成功的部署到没有安装NET Framwork环境的机器上