golang/go
View on GitHubsyscall: exec_windows.go: arguments should not be escaped to work with msiexec
Open
#15,566 opened on May 6, 2016
NeedsFixOS-Windowsearly-in-cyclehelp wanted
Repository metrics
- Stars
- (133,883 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
Problem: When I try to run a command in Go on Windows using exec.Command() and then exec.Run(), the arguments are escaped using this logic: https://github.com/golang/go/blob/master/src/syscall/exec_windows.go#L26. That logic escapes the quotes around TARGETDIR="%v" which need to be there. I currently am assigning to Cmd.SysProcAttr manually to get around the escaping.
- What version of Go are you using (
go version)? Go 1.6.2 - What operating system and processor architecture are you using (
go env)? Windows 10 Pro x64 - What did you do?
- The code is available here, but needs to be run on Windows: https://play.golang.org/p/aU1PlbNTqM
- Download any MSI. I used https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.2.6-signed.msi and renamed it to package.msi.
- You can run Error() and NoError() to see the difference
- What did you expect to see? I expect to see the MSI say: Completed the ... Setup Wizard.
- What did you see instead? I see the Windows Installer help Windows and when I click it, I get: exit status 1639 which is: ERROR_INVALID_COMMAND_LINE 1639 Invalid command line argument. Consult the Windows Installer SDK for detailed command line help.