Inno setup 在Inno安装程序中运行Sql server脚本以使用cmd更新数据库

Inno setup 在Inno安装程序中运行Sql server脚本以使用cmd更新数据库,inno-setup,Inno Setup,我正在使用Inno setup所做的设置更新sql server数据库。 我用cmd编写这一行命令 sqlcmd -s myserverName -U sa -P MyPass -d myDataBase -i scriptAddress 它工作正常,我想在Inno设置中也这样做,并编写这行代码 procedure UpdateDataBase; var Param:String; Kode : integer; FileName :String; begin InstanceNam

我正在使用Inno setup所做的设置更新sql server数据库。 我用cmd编写这一行命令

sqlcmd -s myserverName -U sa  -P MyPass -d myDataBase -i scriptAddress
它工作正常,我想在Inno设置中也这样做,并编写这行代码

procedure UpdateDataBase;
var
 Param:String;
 Kode : integer;
 FileName :String;
begin
 InstanceName:= DEF_INSTANCENAME;
 InstancePass:= DEF_DBPASSWORD;
 DataBaseName:= DEF_DATABASENAME;
 serverName:= 'SINA-PC\RMPRO';
 FileName:= 'C:\Update2008to2018.sql';
 Param:= ' sqlcmd -S '+ServerName+' -U sa -P '+ InstancePass+ ' -d '+ DataBaseName+ ' -i '+  
   FileName;        
  if  Exec('cmd.exe',param ,'', SW_SHOW, ewWaitUntilTerminated,kode) then
     begin
       showMessage('Tamam');
    end;
结束


但是在调用这个过程之后,我有一个空的cmd窗口。我应该怎么做

您可能应该直接调用
sqlcmd.exe
,而不是作为
cmd.exe
的参数。因此,您应该有如下内容(尚未测试,但应该开始):


是否可以将sqlcmd作为parameter@sina你为什么要那样做?“mirtheil提出的是正确的方法。”MartinPrikryl在一个奇怪的情况下,我不能在win 7上运行sqlcmd,当我在上面写的行中使用cmd时,一切都很好,我认为这样在大多数pc上应该可以毫无问题地运行,但是如果使用Innosetup更新数据库的任何好的、稳定的方法都能帮到我,那么meIt必须是
参数:='/c sqlcmd-S'.
——但这没有意义。
pgm := 'sqlcmd.exe';
Param := '-S '+ServerName+' -U sa -P '+ InstancePass+ ' -d '+ DataBaseName+ ' -i '+ FileName;        
if  Exec(pgm, param, '', SW_SHOW, ewWaitUntilTerminated, kode) then
begin
  MsgBox('Done.', mbInformation, MB_OK);
end;