Installation Inno安装过程在安装后未执行

Installation Inno安装过程在安装后未执行,installation,inno-setup,setup-deployment,Installation,Inno Setup,Setup Deployment,我在inno设置中编译了多个程序,即 Sql Server .Net framework 3.5 水晶报告 Sql脚本 我面临的问题是,执行脚本的代码所在的过程在安装之前的程序之后不会执行。如果取消之前的程序,则执行该程序 [Files] Source: "E:\Inno Data\Inno_Setup\Prerequisites\dotnetfx35\NDP451-KB2858728-x86-x64-AllOS-ENU.exe"; DestDir: {tmp}; AfterInstall:

我在inno设置中编译了多个程序,即

Sql Server .Net framework 3.5 水晶报告 Sql脚本 我面临的问题是,执行脚本的代码所在的过程在安装之前的程序之后不会执行。如果取消之前的程序,则执行该程序

[Files]

Source: "E:\Inno Data\Inno_Setup\Prerequisites\dotnetfx35\NDP451-KB2858728-x86-x64-AllOS-ENU.exe"; DestDir: {tmp}; AfterInstall: InstallFramework
Source: "E:\Inno_Setup\Prerequisites\CrystalReports105\CRRuntime_64bit_13_0_5.msi"; DestDir: {tmp}; AfterInstall: InstallCrystalReports

Source: "E:\Prerequisites\SQLServer2008R2SP2\SQLEXPRWT_x64_ENU.exe"; DestDir: {tmp}

;SQL Script Files
Source: "E:\SQLInstallTEST\Scripts\RCabSoft.sql"; DestDir:"{app}\Scripts"

[Run]

Filename: "{tmp}\SQLEXPRWT_x64_ENU.exe"; Parameters: "/ACTION=Install /INSTANCENAME=MSSQLSERVER /QS /HIDECONSOLE /INDICATEPROGRESS=""False"" /IAcceptSQLServerLicenseTerms /SQLSVCACCOUNT=""NT AUTHORITY\SYSTEM"" /SQLSYSADMINACCOUNTS=""builtin\users"" /SKIPRULES=""RebootRequiredCheck"" "; Check: isWin64(); 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\CRRuntime_64bit_13_0_5.msi"" /qb"; WorkingDir: {tmp}; 
Filename: "{tmp}\NDP451-KB2858728-x86-x64-AllOS-ENU.exe"; parameters: "/SILENT /NOCANCEL"; AfterInstall: sqlscript;

[Code]

procedure sqlscript;
var
  ResultCode: Integer;
  OutputText: String;
begin

      if FileExists(ExpandConstant('{pf32}\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SSMS.exe')) then
      begin        
        ExtractTemporaryFile('RCabSoft.sql');        

        // Execute SQL Update Scripts        
          Exec('SqlCmd.exe', ' -e -E -S .' + ExpandConstant(' -i "{tmp}\RCabSoft.sql"'), '', SW_SHOW, ewWaitUntilTerminated, ResultCode);         
      end;                                                      
end;

首先,您应该检查目标系统上是否尚未安装这些先决条件。然后,如果您想中断他们的安装链,请使用脚本代码执行。我能想到的唯一方法是检查刚刚执行的安装程序的退出代码,最好是从PrepareToInstall事件方法中执行。@TLama。。。。好吧,我已经粘贴了所需的代码…检查是在真实的代码中…但主要的问题是程序没有执行…对不起,我在第一次阅读时没有收到你的问题。您的意思是sqlscript过程不执行吗?我仍然对你描述的行动顺序有点迷茫。在任何情况下,都应该检查Exec函数调用的结果以及它返回的退出代码。从我现在所能说的来看,您缺少指向SqlCmd.exe的路径。我面临着同样的问题。有什么解决办法吗?