Ich habe eine extractor.bat, die ich gerne nach dem Installer installieren würde alles installiert.Inno-Setup-Exec-Funktion nicht voll funktionsfähig
Extractor.bat enthält:
echo ARGUMENT 1 (PATH TO CUSTOM MODS): %1
echo ARGUMENT 2 (PATH TO EXTRACT TO): %2
set custommods=%1
set wotpath=%2
IF EXIST %custommods%\*.zip (
for /F "delims=" %%I IN (' dir /b /s /a-d %custommods%\*.zip ') DO (
"7za.exe" x "%%I" -o%wotpath% -y
)
)
IF EXIST %custommods%\*.7z (
for /F "delims=" %%I IN (' dir /b /s /a-d %custommods%\*.7z ') DO (
"7za.exe" x "%%I" -o%wotpath% -y
)
)
Dieser Teil der ssPostInstall Code ist:
begin
if (CurStep=ssDone) then
begin
Exec(ExpandConstant('{app}\extractor.bat'), ExpandConstant('{app}\custom_folder {app}\ > extractor.log'), '', SW_HIDE, ewWaitUntilTerminated, ErrCode);
Exec(ExpandConstant('{app}\res_mods\quick_fix.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, ErrCode);
logfilepathname := expandconstant('{log}');
logfilename := ExtractFileName(logfilepathname);
newfilepathname := expandconstant('{app}\') + 'Installer.log';
filecopy(logfilepathname, newfilepathname, false);
end;
Ende;
Das Problem ist, dass diese Funktion auf meinem PC funktioniert, aber nicht auf einem anderen PC funktioniert, auch ohne Antivirenschutz. Warum passiert das?
habe ich vor kurzem umgezogen, dass Extraktor Ausführung an dem [CODE] -Abschnitt, war zuvor in [RUN] -Abschnitt als eine Zeile:
Filename: "{tmp}\extractor.bat"; Parameters: " ""{app}\custom_folder"" ""{app}\"" "; flags: runhidden;
Und es funktioniert an diesem PC in Ordnung, aber wenn ich Verwenden Sie den Codeabschnitt, der nicht funktioniert. Ich habe versucht, es zu debuggen, und bemerkte, dass die Ausgabe von extractor.bar zu Installer.log in der Mitte ausgeschnitten der zweiten Zeile wird, siehe:
ARGUMENT 1 (PATH TO CUSTOM MODS): D:\Games\GameFolder
ARGUMENT 2 (PATH TO EXTRACT TO): of
Einige seltsame „von“ und nichts weiter.
Edit:
versucht, diese (zu Spielzeug mit cmd Makro):
Exec(ExpandConstant('{cmd}'), '/C ' + ExpandConstant('{app}') + '\res_mods\quick_fix.bat', ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ErrCode);
und es wurde nicht ausgeführt, natürlich habe ich eine quick_fix.bat in diesem Ordner vorhanden.
edit2:
ich dies derzeit mit bin:
Exec(ExpandConstant('{app}\extractor.bat'), ExpandConstant('"{app}\Custom_mods" "{app}" > _Extractor.log'), '', SW_HIDE, ewWaitUntilTerminated, ErrCode);
Und es funktioniert, aber nicht jedermanns Sache, funktioniert für mich gedacht. Es kann in Ordnern installiert werden, die Namen mit Leerzeichen enthalten.
EDIT3:
[Files]
Source: "{#CompPath}\7za.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
Source: "{#CompPath}\7za.dll"; DestDir: "{tmp}"; Flags: deleteafterinstall
Source: "{#CompPath}\7zxa.dll"; DestDir: "{tmp}"; Flags: deleteafterinstall
Edit:
ich versucht habe zu machen quick_fix.bat zu arbeiten, da es einfacher Makro ist, und es ist nicht so gut ausgeführt wird.
[Files]
Source: "{#CompPath}\quick_fix.bat"; DestDir: "{app}\res_mods\"; Flags: deleteafterinstall
[CODE]
Exec(ExpandConstant('{cmd}'), '/C ' + ExpandConstant('{app}') + '\res_mods\quick_fix.bat', ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ErrCode);
Beginnen Sie hier: [Debug nicht funktionierende Batch-Datei von Inno Setup-Installer ausgeführt] (http: // Stackoverflow.com/questions/37324386/debugging-nicht-arbeiten-Batch-Datei-ausgeführt-von-Inno-Setup-Installer) –
* "bemerkte, dass die Ausgabe von extractor.bar zu Installer.log in der Mitte der zweiten Zeile ausgeschnitten wird" * - Meinst du nicht 'extractor.log' und nicht' Installer.log'? –
Installer.log ist ein separates Protokoll, Sie können es dort in meinem Code sehen, aber es ist nicht von irgendwelchen Problemen betroffen. Ich habe es nur zur besseren Übersicht dieses Teils aufgenommen. –