C# 取消Inno安装程序中的安装
我正在用C#开发一个应用程序。我正在尝试使用Inno安装程序创建安装包,但我需要检查用户是否安装了.NET framework。我这样做了,但问题是:如果用户不想安装.NET4,程序需要取消安装。我该怎么做C# 取消Inno安装程序中的安装,c#,installation,inno-setup,C#,Installation,Inno Setup,我正在用C#开发一个应用程序。我正在尝试使用Inno安装程序创建安装包,但我需要检查用户是否安装了.NET framework。我这样做了,但问题是:如果用户不想安装.NET4,程序需要取消安装。我该怎么做 [运行] 文件名:“{app}\dotNetFx40_Full_x86_x64.exe”;检查:框架未安装 文件名:“{app}\sis_visu_ipccV2.0.exe”;说明:“{cm:LaunchProgram,SisIPCCAR4}”;标志:nowait POSTALL skipi
[运行]
文件名:“{app}\dotNetFx40_Full_x86_x64.exe”;检查:框架未安装
文件名:“{app}\sis_visu_ipccV2.0.exe”;说明:“{cm:LaunchProgram,SisIPCCAR4}”;标志:nowait POSTALL skipifsilent
[守则]
函数框架未安装:布尔值;
开始
如果MsgBox('Foi detectado que seu computerator não.NET Framework 4.0.Para que o applicativo execute normalmenteénecessário tèlo installado.Deseja installar?'、MB confirmation、MB_YESNO或MB debutton2)=那么
开始
结果:=不存在注册表项(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\.NETFramework\policy\v4.0');
结束
否则开始
中止
结束;
结束;
一开始我会检查并请求.NET安装许可
如果用户选择而不是安装.NET,安装过程将终止
如果用户同意安装.NET,安装过程将正常运行,并且.NET将在安装结束时安装(通过run
部分)
您可以将其从运行
部分移动到安装前
或选择其他解决方案,但这需要编写额外的代码
例如:
[Run]
Filename: "{app}\dotNetFx40_Full_x86_x64.exe"; WorkingDir: "{app}";
Parameters: "/passive /norestart"; Flags: waituntilterminated skipifdoesntexist;
StatusMsg: "{cm:dotNetInstallation}"; Check: not dotNetInstalled
Filename: "{app}\sis_visu_ipccV2.0.exe"; Description: "{cm:LaunchProgram,SisIPCCAR4}";
Flags: nowait postinstall skipifsilent
[CustomMessages]
dotNETnotpresent=Foi detectado que seu computador não possui o .NET Framework 4.0. Para que o aplicativo execute normalmente é necessário tê-lo instalado. %n%nDeseja instalar?
dotNetInstallation=Installation of .NET Framework 4.0 in progress...
[Code]
var
dotNetBool: Boolean;
function InitializeSetup(): Boolean;
var
Q: Integer;
begin
Result := False;
dotNetBool := False;
if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0') then begin
//Registry entry was not found, quesion will appear
Q := MsgBox(ExpandConstant('{cm:dotNETnotpresent}'), mbInformation, MB_YESNO);
if Q = IDYES then begin
//If the asnwer is YES, Setup will initialize
//If the answer is NO, Setup will terminate
Result := True;
end;
end
else begin
//Registry entry was found, Setup will initialize
dotNetBool := True;
Result := True;
end;
end;
function dotNetInstalled: Boolean;
begin
Result := dotNetBool;
end;
在这种情况下,我将更改顺序,并在安装程序初始化后立即执行.NET检查并显示消息。安装所有文件,然后。。。最后取消设置。如何在设置初始化后立即显示消息?对不起,这些天我开始用Inno了。我的代码不起作用!您可以在函数InitializeSetup()中实现或调用Check函数:Boolean
,然后将结果(例如作为Q
)从消息框传递到此函数的结果。例如,如果Q=y,则结果:=True)代码>什么将继续安装。对不起,我不明白。函数InitializeSetup在哪里?我不理解(例如Q)…请在我的粘贴箱上查找示例:它仍然存在问题。即使在已经安装了.NET的计算机中,.NET也会开始安装。上面说那是在修理。这是最后一个问题。谢谢@用户3628552-你是对的。我忘了。更新代码发布。