]> granicus.if.org Git - esp-idf/commitdiff
tools: installer: fix quoting of IDF_TOOLS_PATH
authorIvan Grokhotkov <ivan@espressif.com>
Mon, 22 Jul 2019 06:56:43 +0000 (08:56 +0200)
committerIvan Grokhotkov <ivan@espressif.com>
Mon, 22 Jul 2019 07:29:49 +0000 (09:29 +0200)
IDF_TOOLS_PATH may contain spaces, so needs to be properly quoted.

Closes https://github.com/espressif/esp-idf/issues/3807

tools/windows/tool_setup/idf_cmd_init.bat
tools/windows/tool_setup/idf_setup.iss.inc

index 853dcf4da7f999139987e575ce4a91b2040633a6..039266e7b9348ef04a99bbe78b37caafe4991cc6 100644 (file)
@@ -18,8 +18,8 @@ if "%~2"=="" (
     goto :end
 )
 
-set IDF_PYTHON_DIR=%1
-set IDF_GIT_DIR=%2
+set "IDF_PYTHON_DIR=%1"
+set "IDF_GIT_DIR=%2"
 
 :: Strip quoutes
 set "IDF_PYTHON_DIR=%IDF_PYTHON_DIR:"=%"
@@ -69,7 +69,7 @@ echo Adding ESP-IDF tools to PATH...
 :: It is possible to do this without a temporary file (running idf_tools.py from for /r command),
 :: but that way it is impossible to get the exit code of idf_tools.py.
 set "IDF_TOOLS_EXPORTS_FILE=%TEMP%\idf_export_vars.tmp"
-python.exe %IDF_TOOLS_PY_PATH% --tools-json %IDF_TOOLS_JSON_PATH% export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
+python.exe "%IDF_TOOLS_PY_PATH%" --tools-json "%IDF_TOOLS_JSON_PATH%" export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
 if %errorlevel% neq 0 goto :end
 
 for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%") do (
index 30c626a8dc3009c55700a43238cca759704d1ee4..c1dd9e11392f4b547107ecbb44b7882a80783914 100644 (file)
@@ -142,7 +142,7 @@ begin
     end;
 
     ExtractTemporaryFile('7za.exe')
-    CmdLine := ExpandConstant('{tmp}\7za.exe x -o' + ExpandConstant('{tmp}') + ' -r -aoa ' + IDFZIPFileName);
+    CmdLine := ExpandConstant('{tmp}\7za.exe x -o' + ExpandConstant('{tmp}') + ' -r -aoa "' + IDFZIPFileName + '"');
     IDFTempPath := ExpandConstant('{tmp}\esp-idf-') + IDFZIPFileVersion;
     Log('Extracting ESP-IDF reference repository: ' + CmdLine);
     Log('Reference repository path: ' + IDFTempPath);
@@ -212,9 +212,9 @@ begin
   end else begin
     Log('idf_tools.py does not exist in IDF directory, using a fallback version');
     IDFToolsPyCmd := ExpandConstant(PythonExecutablePath
-                                    + ' {app}\idf_tools_fallback.py'
+                                    + ' "{app}\idf_tools_fallback.py"'
                                     + ' --idf-path ' + IDFPath
-                                    + ' --tools {app}\tools_fallback.json');
+                                    + ' --tools "{app}\tools_fallback.json"');
   end;
 
   Log('idf_tools.py command: ' + IDFToolsPyCmd);
@@ -238,7 +238,9 @@ begin
   ForceDirectories(ExpandConstant('{group}'));
   Destination := ExpandConstant('{group}\{#IDFCmdExeShortcutFile}');
   Description := '{#IDFCmdExeShortcutDescription}';
-  Command := ExpandConstant('/k {app}\idf_cmd_init.bat "') + PythonPath + '" "' + GitPath + '"';
+  { If cmd.exe command argument starts with a quote, the first and last quote chars in the command
+    will be removed by cmd.exe; each argument needs to be surrounded by quotes as well. }
+  Command := ExpandConstant('/k ""{app}\idf_cmd_init.bat" "') + PythonPath + '" "' + GitPath + '""';
   Log('CreateShellLink Destination=' + Destination + ' Description=' + Description + ' Command=' + Command)
   try
     CreateShellLink(