我正在试用Inno Setup,为创建安装程序做准备。我的第一次尝试是向用户报告当前安装了.NET Framework。我想出了下面的脚本,它安装了一个令牌exe,但它没有显示我想显示已安装的Framework版本的消息框。
[Setup]
AppName=NETFramework_Test
AppVersion=1.0.0
DefaultDirName=c:alNetFWTesttest
WizardStyle=modern
OutputDir=c:alNetFWTest
[Files]
Source: "c:alcomputermiscsmallappstmpdirtmpdir.exe"; DestDir: "{app}";
[Code]
var
VersionNum: cardinal;
begin
if RegQueryDWordValue(HKLM, 'SOFTWAREMicrosoftNET Framework SetupNDPv4Full',
'Version', VersionNum) then
begin
MsgBox('The installed .NET Framework version:' + IntToStr(VersionNum),
mbInformation, MB_OK);
end
else
begin
MsgBox('Error reading the Registry...', mbInformation, MB_OK);
end;
end.
既然已经可以使用IsDotNetInstalled
,为什么要手动执行此操作?
例如:
[Code]
// InitializeSetup is called when the setup is starting.
function InitializeSetup(): Boolean;
begin
Result := True;
if not IsDotNetInstalled(net462, 0) then
begin
MsgBox('The required .NET Framework version 4.6.2 is not installed.',
mbError, MB_OK)
Result := False;
end;
end;
您需要从一些Inno-Setup事件函数(如InitializeSetup
(调用代码。
例如,请参阅Inno Setup-如何在安装前/安装期间检查系统规格?
此外,Version
值是字符串,因此需要使用RegQueryStringValue
。