【发布时间】:2014-10-27 10:58:01
【问题描述】:
我正在尝试使用 inno setup 执行 2 个脚本。 我认为的问题是包含空格的文件的路径。 这些脚本正在运行,因为我已经尝试了没有空格的硬编码路径并且它确实有效。 有这篇文章描述了这个问题并添加了解决方案,但我已经尝试过但它不起作用。 这是主题Inno Setup, spaces and double quote in [Run]
为了不使用硬编码路径,我使用了 inno 设置常量,所以在输出文件夹上我有一个 setup.exe 和一个名为 testfolder 的文件夹,其中包含 2 个脚本,一个用于创建数据库,另一个用于创建表。 在 inno setup 中这样做了
connExe:=ExpandConstant('{tmp}')+'\sqlcmd.exe';
pathFx1:=ExpandConstant('{src}')+'\testfolder\teste.sql';
pathFx2:=ExpandConstant('{src}')+'\testfolder\idontimedb.des';
Exec(connExe,' -S DEV3\IDONICSYS4 -U sa -P idsysadmin -i \""'+connFx1+'\""', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
MsgBox(IntToStr(ResultCode), mbError, mb_Ok);
Exec(connExe,' -S DEV3\IDONICSYS4 -d MSSQLTIPS -U sa -P idsysadmin -i \""'+connFx2+'\""', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
MsgBox(IntToStr(ResultCode), mbError, mb_Ok);
当我运行两个消息框时显示代码 2,但我仍然无法找到此代码的含义。 我认为我的问题在于反斜杠和引号位置,但我已经尝试了不同的组合,但它不起作用.. 感谢您的帮助。
文件的完整路径是: C:\Users\hsilva\Documents\Inno setupo scripts\Setup\Output\testfolder\teste.sql\create database
C:\Users\hsilva\Documents\Inno setupo scripts\Setup\Output\testfolder\idontimedb.des \create tables
C:\Users\hsilva\Documents\Inno setupo scripts\Setup\Output\setup.exe \executable
提前谢谢...
更新 - 2014 年 10 月 27 日 因此,正如用户 LTama 所建议的那样(再次感谢 TLama),我已经检查了运行脚本所需的文件.. 并且对所需的文件进行了评论,我做了一些更改,现在它给了我代码 1。这是什么意思? 我使用本网站http://0x3f.org/blog/howto-execute-sql-scripts-in-inno-setup/ 中的代码并进行了一些更改。
in the files section i have got this:
Source: "C:\Users\hsilva\Documents\InnoSetup\sqlcmd.exe"; Flags: dontcopy ;
Source: "C:\Users\hsilva\Documents\InnoSetup\sqlcmd.rll"; Flags: dontcopy ;
我需要这两个文件吗,因为在安装 sql server 2008 r2 时,这些文件已安装,并且可用?
在代码部分我得到了这个:
procedure DeinitializeSetup();
var
connExe:String;
connFx1:String;
begin
ExtractTemporaryFile('sqlcmd.exe');
ExtractTemporaryFile('sqlcmd.rll');
connExe:=ExpandConstant('{tmp}')+'\sqlcmd.exe';
connFx1:=ExpandConstant('{src}')+'\folder\teste.sql';
Exec(connExe,' -S DEV3\IDONICSYS4 -U sa -P idsysadmin -i \""'+connFx1+'\""', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
MsgBox(IntToStr(ResultCode), mbError, mb_Ok);
end;
end;
这是在设置结束时执行的,我省略了一些检查,例如检查实例是否存在..
【问题讨论】:
-
退出代码 2 代表
ERROR_FILE_NOT_FOUND。你是把 sqlcmd.exe 解压到{tmp}文件夹吗? -
所以在测试期间我注释了一些行并且注释了 sqlcmd.exe 和 sqlcmd.rll 行。我已经更新了帖子。
-
我不认为这些文件是可再分发的。您应该使用现有 SQL Server 安装中的那些,或者随 SQL Server 分发一起安装的那些。所以我认为您的任务是找到现有 sqlcmd.exe 工具的路径。
-
它现在正在工作,所以我不需要反斜杠,我只需要在文件路径之前和之后添加引号..我目前正在更改脚本以获取这两个文件 sqlcmd.exe和程序文件夹中的 sqlcmd.rll..
-
如果用户选择将 SQL Server 安装到
different location怎么办?
标签: inno-setup sqlcmd