如何使用Inno Setup 工具进行打包这里就不在进行说明,只要百度网上有很多文章。这里主要是介绍一下如何将.NetFramework打入安装包。
下面演示的是以.NET Framework4.7.2为例。
Inno Setup打包.Net Framework到安装包方式脚本:
[Files]
Source: "F:\WinForms学习\InnoSetUpDemo\InnoSetUpDemo\bin\Debug\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
//1.将NET Framework4.7.2添加到安装包中,这个路径是.Net安装包在我们自己电脑的位置。
//2.DestDir: "tmp";应用安装的时候会解压到系统的临时文件tmp中,Flags: ignoreversion 忽略安装版本
Source: "C:\Users\Administrator\Desktop\DotNetFX472\NDP472-KB4054530-x86-x64-AllOS-ENU.exe"; DestDir: "tmp"; Flags: ignoreversion
[Code]
//程序启动函数
function InitializeSetup(): Boolean;
var ResultCode: Integer;
begin
//判断是否安装了NETFramework4.7.2 大家注意,正确是SOFTWARE\\Microsoft\\.NETFramework\\v4.0.30319\\SKUs\\.NETFramework,Version=v4.7.2
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.7.2') then
begin
//返回值 继续执行
Result :=true;
end
else
//若用户没有安装
begin
//弹出一个对话框
if MsgBox('系统检测到您没有安装.Net Framework4.7.2运行环境,是否立即安装?', mbConfirmation, MB_YESNO) = idYes then
begin
//要把.net安装包,从我们的安装包中取出来,放到系统的临时文件夹中
ExtractTemporaryFile('NDP472-KB4054530-x86-x64-AllOS-ENU.exe');
//我们再运行这个安装包(运行1个.exe文件)
Exec(ExpandConstant('{tmp}\NDP472-KB4054530-x86-x64-AllOS-ENU.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
//返回值 继续执行
Result :=true;
end
else
begin
MsgBox('未能成功安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出!',mbInformation,MB_OK);
Result := false;
end
end;
end;
上面脚本中都有注释,就不在具体解释了。需要注意的就是好多文章都说检查.Net的注册表路径是:
'SOFTWARE\Microsoft\.NETFramework\policy\v4.7.2'
我是试过不好用,后来换了脚本中的路径就可以了。运行的时候如果用户电脑没有安装指定的.NetFrameWork版本就会弹出提示,如下图:
选择“是”就会开始安装.NetFramework,安装完成之后继续安装应用,好了就介绍这么多了。
下面是我参考的视频和资料:
B站视频:如何使用Inno Setup软件制作.exe安装包
文章:用Inno Setup来解决.NetFramework安装问题