From 5a00ddfdeb5132cee067f02543dac08eda17b305 Mon Sep 17 00:00:00 2001 From: dhoegh Date: Sun, 25 Oct 2015 13:07:44 +0100 Subject: [PATCH] Fixes windows install issue due to wrong quoting see https://github.com/JuliaLang/IJulia.jl/pull/211#issuecomment-51562782. fix #17 --- src/Conda.jl | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/src/Conda.jl b/src/Conda.jl index d55ee3e..26f8f27 100644 --- a/src/Conda.jl +++ b/src/Conda.jl @@ -73,6 +73,63 @@ function additional_channels() return res end +############ Work aorund for https://github.com/JuliaLang/julia/issues/8064 ################## +# See also https://github.com/JuliaLang/IJulia.jl/pull/211#issuecomment-51562782 + +typealias HANDLE Ptr{Void} +typealias DWORD Uint32 +typealias WORD Uint16 +typealias LPTSTR Cwchar_t +typealias LPBYTE Ptr{Char} + +immutable STARTUPINFO + cb::DWORD + lpReserved::LPTSTR + lpDesktop::LPTSTR + lpTitle::LPTSTR + dwX::DWORD + dwY::DWORD + dwXSize::DWORD + dwYSize::DWORD + dwXCountChars::DWORD + dwYCountChars::DWORD + dwFillAttribute::DWORD + dwFlags::DWORD + wShowWindow::WORD + cbReserved2::WORD + lpReserved2::LPBYTE + hStdInput::HANDLE + hStdOutput::HANDLE + hStdError::HANDLE + STARTUPINFO() = new() +end + +immutable PROCESS_INFORMATION + hProcess::HANDLE + hThread::HANDLE + dwProcessId::DWORD + dwThreadId::DWORD + PROCESS_INFORMATION() = new(C_NULL,C_NULL,C_NULL,C_NULL) +end + +CreateProcess(cmd) = begin + si = [STARTUPINFO()] + pi = [PROCESS_INFORMATION()] + ccall(:CreateProcessW, Cchar, + (Ptr{Cwchar_t}, Ptr{Cwchar_t}, Ptr{Int}, Ptr{Int}, Cchar, Int64, + Ptr{Uint8}, Ptr{Uint8}, Ptr{PROCESS_INFORMATION}, Ptr{STARTUPINFO}), + C_NULL, + utf16(cmd), + C_NULL, + C_NULL, + 0, + 0, + C_NULL, C_NULL, + convert(Ptr{PROCESS_INFORMATION}, pointer(pi)), + convert(Ptr{STARTUPINFO}, pointer(pi))) +end + +########################################################## "Get the miniconda installer URL." function _installer_url() @@ -115,7 +172,7 @@ function _install_conda(force=false) run(`$installer -b -f -p $PREFIX`) end @windows_only begin - run(`$installer /S /AddToPath=0 /RegisterPython=0 /D=$PREFIX`) + CreateProcess("$installer /S /AddToPath=0 /RegisterPython=0 /D=$PREFIX") end end end