Skip to content
This repository was archived by the owner on Jun 4, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion REQUIRE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
julia 0.6
Compat 0.42.0
Compat 0.56.0
URIParser 0.0.3
@unix HTTPClient 0.0.0
LibExpat 0.2.8
Expand Down
24 changes: 13 additions & 11 deletions src/WinRPM.jl
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,24 @@ if isunix()
end
elseif iswindows()
function download(source::AbstractString; retry=5)
dest = Vector{UInt16}(261)
ps = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
tls12 = "[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12"
client = "New-Object System.Net.Webclient"
# in the following we escape ' with '' (see https://ss64.com/ps/syntax-esc.html)
filename = joinpath(tempdir(), split(source, "/")[end])
downloadfile = "($client).DownloadFile('$(replace(source, "'" => "''"))', '$(replace(filename, "'" => "''"))')"
for i in 1:retry
res = ccall((:URLDownloadToCacheFileW, :urlmon), stdcall, Cuint,
(Ptr{Void}, Ptr{UInt16}, Ptr{UInt16}, Clong, Cint, Ptr{Void}),
C_NULL, transcode(UInt16, source), dest, sizeof(dest) >> 1, 0, C_NULL)
if res == 0
resize!(dest, findfirst(iszero, dest) - 1)
filename = transcode(String, dest)
try
run(`$ps -NoProfile -Command "$tls12; $downloadfile"`)
if isfile(filename)
return read(filename, String), 200
return readstring(filename), 200
end
else
warn("Unknown download failure, error code: $res")
catch ex
warn("Unknown download failure. Retry $i/$retry downloading: $source")
end
warn("Retry $i/$retry downloading: $source")
end
warn("""Unknown download failure. WinRPM download function relies on Windows PowerShell functionality.
Check that PowerShell 3 or higher is installed and TLS 1.2 protocol support enabled.)""")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra trailing ) in message

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

return "", 0
end
else
Expand Down