2015-04-21 3 views
0

Я сделал настройку, в которой моя функция напрямую запускается в секции [Run]. Эта настройка запускает сценарий базы данных. Он работает нормально, но когда он завершается, он выдает «Невозможно выполнить файл: CreateProcress Failed», код 87. Параметр неверен ».Не удалось выполнить файл: CreateProcress Failed; Код 87. Paramete неверен

В чем причина этой ошибки и как ее исправить?

Мой Inno код:

[Files] 
Source: "E:\SQLInstallTEST\Scripts\RCabSoft.sql"; DestDir: {app}; Flags: ignoreversion 

[Run] 
Filename: "{code:SqlScript}"; 

[Code] 

function SqlScript(Value: string): string; 
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 "{app}\RCabSoft.sql"'), '', SW_SHOW, ewWaitUntilTerminated, ResultCode);   
       MsgBox('Successful', mbInformation, MB_OK);   
     end; 
end; 

SnapShot:

enter image description here

+0

Ваши параметры 'Exec' ошибочны. Чтобы понять, почему, добавьте объявление строковой переменной Temp и эти две строки кода: 'Temp: = '-e -E -S.' + ExpandConstant ('-i "{app} \ RCabSoft.sql"'); MsgBox (Temp, mbInformation, MB_OK); 'и проверьте, что отображается во всплывающем окне. –

+3

Кроме того, здесь не подходит (или приемлемо) для вызова конкретного пользователя для получения справки. Это фактически не работает, если только этот пользователь не прокомментировал или не ответил на этот конкретный вопрос. Не помешайте сайту, сделав это. –

+0

@KenWhite ... спасибо за точку ... я удалю комментарий –

ответ

1

Кажется, вы на самом деле не возвращает строку из функции SqlScript, то есть вы не пишете на встроенный -in Result переменная.

Кроме того, вы должны использовать либо [Run], либо Exec, но не оба, как предназначенные для запуска исполняемого файла.

(От мой комментарий ниже) Try это в разделе [Run]:

Filename: "SqlCmd.exe"; Parameters: "-e -E -S . -i {app}\RCabSoft.sql"; Check: FileExists(ExpandConstant('{pf32}\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SSMS.exe')) 

и полностью удалить функцию SqlScript.

+0

@sschuberth .... не могли бы вы помочь мне с этим .. ?? –

+0

что я должен показать в результате? –

+0

Нет результата при запуске SQL Script, поэтому возвращаться нечего. На самом деле это должна быть просто процедура, а не функция. –

 Смежные вопросы

  • Нет связанных вопросов^_^