C# 取消Inno安装程序中的安装

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

我正在用C#开发一个应用程序。我正在尝试使用Inno安装程序创建安装包,但我需要检查用户是否安装了.NET framework。我这样做了,但问题是:如果用户不想安装.NET4,程序需要取消安装。我该怎么做

[运行]
文件名:“{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-你是对的。我忘了。更新代码发布。