Welcome

首页 / 软件开发 / .NET编程技术 / 用Inno Setup来解决.NetFramework安装问题

用Inno Setup来解决.NetFramework安装问题2010-11-25 51cto博客 周金桥前段时间朋友接了一个项目,具体是开发一个安装在局域网内的软件,这个 软件会定时连接局域网内的服务器来更新本地客户端的一些信息,因为在局域网 内存在着多种不同的Windows版本,从WindowsXP、Windows2003及Windows2008到 Windows7等,这个软件采用VS2008/.Net Framework2.0开发,因为有些系统默认 没有安装.Net Framework2.0,所以在运行时需要确保客户机上已经安装上.Net Framework2.0,于是想到将软件打包。

制作软件安装包有几种工具和方案:一是利用Visual Studio自带的安装包制 作工具;二是利用InstallShield这类收费的、专业的安装包制作工具;三是利 用Inno Setup这类免费的、专业的安装包制作工具。

对Visual Studio自带的安装包制作工具研究得不深,早期曾经尝试过将软件 打包成一个安装文件内,不过最终失败了,后来干脆就不再研究了; InstallShield这类收费的安装包制作软件功能确实强大,不过上手确实也不容 易,再加上是收费的(尽管可以找到破解版,但是总觉得不爽),于是转而寻求 利用Inno Setup来解决。

Inno Setup 是一个免费的 Windows 安装程序制作软件,它支持现在所有正 在使用的 Windows 版本: 7, 2008 R2, Vista, XP, 2008, 2003, 2000, Me, 98, 95, 和 NT 4.0 (不需要服务包)。 并且Inno Setup最早出现在1997年,是 一个免费开源的软件,即使作为商业使用也是如此。Inno Setup的官方网站网址 是http://www.jrsoftware.org,当然也可以下载它的中文版本,比如[枫林夜思 雨]汉化的Inno Setup就还不错,我给朋友打包时用的是英文版Inno Setup文件 ,只不过安装文件中用到的.isl文件被我翻译成中文了。

我们想到的办法就是将软件制作成安装包,运行安装包的时候会检查客户机 上是否安装了.Net Framework2.0,如果没有则从局域网内上下载.Net Framework2.0安装文件安装,然后继续安装和配置开发的软件。

从网上搜到这个一个解决方案,代码如下:

[code]
function InitializeSetup: Boolean;
var Path:string ;
ResultCode: Integer;
begin
if RegKeyExists(HKLM, "SOFTWAREMicrosoft.NETFrameworkpolicyv2.0") then
begin
Result := true;
end
else
begin
if MsgBox("系统检测到您没有安装.Net Framework2.0,是否立刻下载并安装?", mbConfirmation, MB_YESNO) = idYes then
begin
Path := ExpandConstant("{pf}Internet Exploreriexplore.exe");
Exec(Path, "http://www.xxx.com/down/dotnetfx2.exe", "", SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
MsgBox("请安装好.Net Framework2.0环境后 ,再运行本安装包程序!",mbInformation,MB_OK);
Result := false;
end
else
begin
MsgBox("没有安装.Net Framework2.0环境, 无法运行XXX程序,本安装程序即将退出!",mbInformation,MB_OK);
Result := false;
end;
end;
end;

上面这段代码的作用是通过检查注册表来判断客户机上是否安装了.Net Framework2.0,如果没有就从http://www.xxx.com/down/dotnetfx2.exe处下载 ,并提示用户安装下载的.Net Framework2.0的程序之后再安装本程序。这么做 有一个优点,因为并不是所有的机器都没有安装.Net Framework2.0,所以仅仅 是一部分没有安装的机器才会需要下载,这样也就不需要将.Net Framework2.0 打包进安装包,是安装包比较小。

不过这样在某些情况下也会出现问题,比如开发了一个不错的软件,用户在 办公室里上网并下载和安装了这个软件,觉得不错,拷贝到家里没有上网的机器 上时就不能安装和使用了,这样麻烦就来了。因此下面想到了另一种解决办法, 这种办法就是将.Net Framework2.0打包进安装文件,在安装开始之前检查客户 机上是否安装了.Net Framework2.0,如果没有安装就将.Net Framework2.0安装 文件从安装包里解压缩出来到临时文件夹下并从临时文件夹下安装,否则就直接 安装开发后的软件,临时文件夹下的文件会在系统重新系统启动时被自动清理, 不用担心占用磁盘空间。