dcrdex
dcrdex copied to clipboard
dexc-desktop: Windows builder, installer
This PR implements the build environment for Windows:
- window and tray icons (incorporates/supersedes @chappjc 's #2351)
- script that automates setting up the build toolchain/environment/dependencies
- MSI (Windows Installer) builder
Tested on Windows 10, Windows 11, Windows 2019/2022
Uhmm, @peterzen what's the correct cmd to use?
this? curl -O https://raw.githubusercontent.com/peterzen/dcrdex/windows_build/client/cmd/dexc-desktop/pkg/setup-windows.cmd
Uhmm, @peterzen what's the correct cmd to use?
this?
curl -O https://raw.githubusercontent.com/peterzen/dcrdex/windows_build/client/cmd/dexc-desktop/pkg/setup-windows.cmd
curl -O https://github.com/peterzen/dcrdex/blob/windows-build/client/cmd/dexc-desktop/pkg/setup-windows.cmd
Tried to run from the normal windows cmd but got this error:
C:\Windows\system32>setup-windows.cmd
C:\Windows\system32>{"payload":{"allShortcutsEnabled":false,"fileTree":{"client/cmd/dexc-desktop/pkg":{"items":[{"name":"windows-msi","path":"client/cmd/dexc-desktop/pkg/windows-msi","contentType":"directory"},{"name":"Build-Windows.md","path":"client/cmd/dexc-desktop/pkg/Build-Windows.md","contentType":"file"},{"name":"build-windows.cmd","path":"client/cmd/dexc-desktop/pkg/build-windows.cmd","contentType":"file"},{"name":"create-dmg.sh","path":"client/cmd/dexc-desktop/pkg/create-dmg.sh","contentType":"file"},{"name":"makecert.ps1","path":"client/cmd/dexc-desktop/pkg/makecert.ps1","contentType":"file"},{"name":"pkg-darwin.sh","path":"client/cmd/dexc-desktop/pkg/pkg-darwin.sh","contentType":"file"},{"name":"pkg-debian.sh","path":"client/cmd/dexc-desktop/pkg/pkg-debian.sh","contentType":"file"},{"name":"pkg-windows.cmd","path":"client/cmd/dexc-desktop/pkg/pkg-windows.cmd","contentType":"file"},{"name":"setup-windows-stage2.ps1","path":"client/cmd/dexc-desktop/pkg/setup-windows-stage2.ps1","contentType":"file"},{"name":"setup-windows.cmd","path":"client/cmd/dexc-desktop/pkg/setup-windows.cmd","contentType":"file"},{"name":"sign-windows.cmd","path":"client/cmd/dexc-desktop/pkg/sign-windows.cmd","contentType":"file"},{"name":"template.applescript","path":"client/cmd/dexc-desktop/pkg/template.applescript","contentType":"file"}],"totalCount":12},"client/cmd/dexc-desktop":{"items":[{"name":"pkg","path":"client/cmd/dexc-desktop/pkg","contentType":"directory"},{"name":"src","path":"client/cmd/dexc-desktop/src","contentType":"directory"},{"name":".gitignore","path":"client/cmd/dexc-desktop/.gitignore","contentType":"file"},{"name":"README.md","path":"client/cmd/dexc-desktop/README.md","contentType":"file"},{"name":"app.go","path":"client/cmd/dexc-desktop/app.go","contentType":"file"},{"name":"app_darwin.go","path":"client/cmd/dexc-desktop/app_darwin.go","contentType":"file"},{"name":"config.go","path":"client/cmd/dexc-desktop/config.go","contentType":"file"},{"name":"gen.go","path":"client/cmd/dexc-desktop/gen.go","contentType":"file"},{"name":"go.mod","path":"client/cmd/dexc-desktop/go.mod","contentType":"file"},{"name":"go.sum","path":"client/cmd/dexc-desktop/go.sum","contentType":"file"},{"name":"icon.go","path":"client/cmd/dexc-desktop/icon.go","contentType":"file"},{"name":"icon_darwin.go","path":"client/cmd/dexc-desktop/icon_darwin.go","contentType":"file"},{"name":"icon_linux.go","path":"client/cmd/dexc-desktop/icon_linux.go","contentType":"file"},{"name":"icon_windows.go","path":"client/cmd/dexc-desktop/icon_windows.go","contentType":"file"},{"name":"main.go","path":"client/cmd/dexc-desktop/main.go","contentType":"file"},{"name":"rsrc_windows_386.syso","path":"client/cmd/dexc-desktop/rsrc_windows_386.syso","contentType":"file"},{"name":"rsrc_windows_amd64.syso","path":"client/cmd/dexc-desktop/rsrc_windows_amd64.syso","contentType":"file"},{"name":"syncserver.go","path":"client/cmd/dexc-desktop/syncserver.go","contentType":"file"},{"name":"winres.json","path":"client/cmd/dexc-desktop/winres.json","contentType":"file"}],"totalCount":19},"client/cmd":{"items":[{"name":"assetseed","path":"client/cmd/assetseed","contentType":"directory"},{"name":"dexc-desktop","path":"client/cmd/dexc-desktop","contentType":"directory"},{"name":"dexc","path":"client/cmd/dexc","contentType":"directory"},{"name":"dexcctl","path":"client/cmd/dexcctl","contentType":"directory"},{"name":"simnet-trade-tests","path":"client/cmd/simnet-trade-tests","contentType":"directory"},{"name":"testbinance","path":"client/cmd/testbinance","contentType":"directory"}],"totalCount":6},"client":{"items":[{"name":"app","path":"client/app","contentType":"directory"},{"name":"asset","path":"client/asset","contentType":"directory"},{"name":"cmd","path":"client/cmd","contentType":"directory"},{"name":"comms","path":"client/comms","contentType":"directory"},{"name":"core","path":"client/core","contentType":"directory"},{"name":"db","path":"client/db","contentType":"directory"},{"name":"mm","path":"client/mm","contentType":"directory"},{"name":"orderbook","path":"client/orderbook","contentType":"directory"},{"name":"rpcserver","path":"client/rpcserver","contentType":"directory"},{"name":"webserver","path":"client/webserver","contentType":"directory"},{"name":"websocket","path":"client/websocket","contentType":"directory"},{"name":"Dockerfile","path":"client/Dockerfile","contentType":"file"},{"name":"Dockerfile.release","path":"client/Dockerfile.release","contentType":"file"}],"totalCount":13},"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"client","path":"client","contentType":"directory"},{"name":"dex","path":"dex","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"server","path":"server","contentType":"directory"},{"name":"spec","path":"spec","contentType":"directory"},{"name":".dockerignore","path":".dockerignore","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".golangci.yml","path":".golangci.yml","contentType":"file"},{"name":".markdownlint.json","path":".markdownlint.json","contentType":"file"},{"name":"AUTHORS","path":"AUTHORS","contentType":"file"},{"name":"LICENSE.md","path":"LICENSE.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"go.mod","path":"go.mod","contentType":"file"},{"name":"go.sum","path":"go.sum","contentType":"file"},{"name":"pkg.sh","path":"pkg.sh","contentType":"file"},{"name":"run_tests.sh","path":"run_tests.sh","contentType":"file"}],"totalCount":17}},"fileTreeProcessingTime":17.728129,"foldersToFetch":[],"reducedMotionEnabled":null,"repo":{"id":312919554,"defaultBranch":"master","name":"dcrdex","ownerLogin":"peterzen","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2020-11-14T23:15:57.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5878500?v=4","public":true,"private":false,"isOrgOwned":false},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"windows-build","listCacheKey":"v0:1705019983.0","canEdit":false,"refType":"branch","currentOid":"33f37e042ff88b3489745b2958a9c0d54d8af31c"},"path":"client/cmd/dexc-desktop/pkg/setup-windows.cmd","currentUser":null,"blob":{"rawLines":[":: This script bootstraps the build environment for Windows. It installs git and",":: PowerShell, clones the dcrdex repo and runs the setup-windows-stage2.ps1 script ",":: which will install the toolchain and libraries required for the build.","::",":: Running the script:",":: setup-windows.cmd <repoBranch> <repoUrl> ","::",":: Both parameters are optional. If not provided, https://github.com/decred/dcrdex@master",":: will be cloned.","","@echo off","","set GitVersion=2.43.0","set PowerShellVersion=7.4.0","","if \"\" neq \"\" ("," set repoBranch=",") else ("," set repoBranch=master",")","","if \"\" neq \"\" ("," set repoUrl=",") else ("," set repoUrl=https://github.com/decred/dcrdex",")","","@echo Installing git... ","set GitInstaller=Git--64-bit.exe","curl -sLO https://github.com/git-for-windows/git/releases/download/v.windows.1/","",":: Create a silent install file","("," echo [Setup]"," echo Lang=default"," echo Dir=C:\\Program Files\\Git"," echo Group=Git"," echo NoIcons=0"," echo SetupType=default"," echo Components=ext,ext\\shellhere,ext\\guihere,gitlfs,assoc,assoc_sh,scalar"," echo Tasks="," echo EditorOption=VIM"," echo CustomEditorPath="," echo DefaultBranchOption= "," echo PathOption=Cmd"," echo SSHOption=OpenSSH"," echo TortoiseOption=false"," echo CURLOption=OpenSSL"," echo CRLFOption=CRLFCommitAsIs"," echo BashTerminalOption=MinTTY"," echo GitPullBehaviorOption=Rebase"," echo UseCredentialManager=Enabled"," echo PerformanceTweaksFSCache=Enabled"," echo EnableSymlinks=Disabled"," echo EnablePseudoConsoleSupport=Disabled"," echo EnableFSMonitor=Disabled",") > git_install_options.ini","","start /wait /VERYSILENT /NORESTART /NOCANCEL /LOADINF=git_install_options.ini","","if 0 neq 0 ("," echo Installation failed."," exit /b 1",")","del ","del git_install_options.ini","",":: Install PowerShell","@echo Installing PowerShell...","set PowerShellInstaller=PowerShell--win-x64.msi","curl -OLs
The filename, directory name, or volume label syntax is incorrect.
Maybe it has to do with this: Install PowerShell","@echo Installing PowerShell...","set PowerShellInstaller=PowerShell--win-x64.msi","curl -OLs The filename, directory name, or volume label syntax is incorrect
?
Maybe it has to do with this:
Install PowerShell","@echo Installing PowerShell...","set PowerShellInstaller=PowerShell--win-x64.msi","curl -OLs The filename, directory name, or volume label syntax is incorrect
?
Apologies, that URL wasn't correct - you need to get the raw script. The documentation points to the correct URL but to the decred/dcrdex
repo but for testing the PR that must be adjusted.
curl -O https://raw.githubusercontent.com/peterzen/dcrdex/windows-build/client/cmd/dexc-desktop/pkg/setup-windows.cmd
curl -O https://raw.githubusercontent.com/peterzen/dcrdex/windows-build/client/cmd/dexc-desktop/pkg/setup-windows.cmd
The build file was downloaded successfully but git failed to install (Windows 10):
The build file was downloaded successfully but git failed to install (Windows 10):
Could you doblecheck that a file named git_install_options.ini
exists in the current directory? If not, it may be a permission issue in \Windows\system32
- if it's not there, could you move the setup-windows.cmd
to another directory (e.g. \Users\Administrator
) and run it from there?
Edit: I was able to reproduce this when running in \Windows\system32
- the command should be run in the Admin home directory. I'll update the documentation.
Okay, will check and try again.
Okay, will check and try again.
Thanks. I've updated the script to change to %UserProfile%
.
Could you doblecheck that a file named git_install_options.ini exists in the current directory?
It's there. Maybe I should delete this yh?
C:\Windows\system32>dir /s git_install_options.ini
Volume in drive C has no label.
Volume Serial Number is 74A5-A215
Directory of C:\Windows\system32
16/01/2024 15:21 542 git_install_options.ini
1 File(s) 542 bytes
Total Files Listed:
1 File(s) 542 bytes
0 Dir(s) 47,346,356,224 bytes free
C:\Windows\system32>
Could you doblecheck that a file named git_install_options.ini exists in the current directory?
It's there. Maybe I should delete this yh?
Yes, though it doesn't hurt. The script now has a fix, basically it needs to be run from any writable directory, e.g. %UserProfile%