mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 18:43:41 -05:00
desktop: update build files
This commit is contained in:
parent
af05e8e86f
commit
a45ea645ee
21 changed files with 490 additions and 465 deletions
|
@ -1,448 +1,54 @@
|
||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
|
includes:
|
||||||
|
common: ./build/Taskfile.common.yml
|
||||||
|
windows: ./build/Taskfile.windows.yml
|
||||||
|
darwin: ./build/Taskfile.darwin.yml
|
||||||
|
linux: ./build/Taskfile.linux.yml
|
||||||
|
|
||||||
vars:
|
vars:
|
||||||
APP_NAME: "gomuks-desktop"
|
APP_NAME: "gomuks-desktop"
|
||||||
BIN_DIR: "bin"
|
BIN_DIR: "bin"
|
||||||
VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}'
|
VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}'
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
|
|
||||||
## -------------------------- Build -------------------------- ##
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
summary: Builds the application
|
summary: Builds the application
|
||||||
cmds:
|
cmds:
|
||||||
# Build for current OS
|
- task: "{{OS}}:build"
|
||||||
- task: build:{{OS}}
|
|
||||||
|
|
||||||
# Uncomment to build for specific OSes
|
|
||||||
# - task: build:linux
|
|
||||||
# - task: build:windows
|
|
||||||
# - task: build:darwin
|
|
||||||
|
|
||||||
|
|
||||||
## ------> Windows <-------
|
|
||||||
|
|
||||||
build:windows:
|
|
||||||
summary: Builds the application for Windows
|
|
||||||
deps:
|
|
||||||
- task: go:mod:tidy
|
|
||||||
- task: build:frontend
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{.BUILD_FLAGS}}'
|
|
||||||
- task: generate:icons
|
|
||||||
- task: generate:syso
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH}}'
|
|
||||||
cmds:
|
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/gomuks-desktop.exe
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -ldflags="-w -s -H windowsgui"{{else}}-gcflags=all="-l"{{end}}'
|
|
||||||
env:
|
|
||||||
GOOS: windows
|
|
||||||
CGO_ENABLED: 0
|
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
|
||||||
|
|
||||||
build:windows:prod:arm64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:windows
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:windows:prod:amd64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:windows
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:windows:debug:arm64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:windows
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
|
|
||||||
build:windows:debug:amd64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:windows
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
|
|
||||||
## ------> Darwin <-------
|
|
||||||
|
|
||||||
build:darwin:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
deps:
|
|
||||||
- task: go:mod:tidy
|
|
||||||
- task: build:frontend
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{.BUILD_FLAGS}}'
|
|
||||||
- task: generate:icons
|
|
||||||
cmds:
|
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -ldflags="-w -s"{{else}}-gcflags=all="-l"{{end}}'
|
|
||||||
env:
|
|
||||||
GOOS: darwin
|
|
||||||
CGO_ENABLED: 1
|
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
CGO_CFLAGS: "-mmacosx-version-min=10.15"
|
|
||||||
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
|
||||||
|
|
||||||
build:darwin:prod:arm64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:darwin:prod:amd64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:darwin:debug:arm64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
|
|
||||||
build:darwin:debug:amd64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
|
|
||||||
|
|
||||||
## ------> Linux <-------
|
|
||||||
|
|
||||||
build:linux:
|
|
||||||
summary: Builds the application for Linux
|
|
||||||
deps:
|
|
||||||
- task: go:mod:tidy
|
|
||||||
- task: build:frontend
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{.BUILD_FLAGS}}'
|
|
||||||
- task: generate:icons
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH}}'
|
|
||||||
cmds:
|
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/gomuks-desktop
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -ldflags="-w -s"{{else}}-gcflags=all="-l"{{end}}'
|
|
||||||
env:
|
|
||||||
GOOS: linux
|
|
||||||
CGO_ENABLED: 1
|
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
|
||||||
|
|
||||||
build:linux:prod:arm64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:linux:prod:amd64:
|
|
||||||
summary: Creates a production build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
PRODUCTION: "true"
|
|
||||||
|
|
||||||
build:linux:debug:arm64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
|
|
||||||
build:linux:debug:amd64:
|
|
||||||
summary: Creates a debug build of the application
|
|
||||||
cmds:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
|
|
||||||
## -------------------------- Package -------------------------- ##
|
|
||||||
|
|
||||||
package:
|
package:
|
||||||
summary: Packages a production build of the application into a bundle
|
summary: Packages a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
|
- task: "{{OS}}:package"
|
||||||
# Package for current OS
|
|
||||||
- task: package:{{OS}}
|
|
||||||
|
|
||||||
# Package for specific os/arch
|
|
||||||
# - task: package:darwin:arm64
|
|
||||||
# - task: package:darwin:amd64
|
|
||||||
# - task: package:windows:arm64
|
|
||||||
# - task: package:windows:amd64
|
|
||||||
|
|
||||||
## ------> Windows <------
|
|
||||||
|
|
||||||
package:windows:
|
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
|
||||||
cmds:
|
|
||||||
- task: create:nsis:installer
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH}}'
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
|
|
||||||
package:windows:arm64:
|
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
|
||||||
cmds:
|
|
||||||
- task: package:windows
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
|
|
||||||
package:windows:amd64:
|
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
|
||||||
cmds:
|
|
||||||
- task: package:windows
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
|
|
||||||
generate:syso:
|
|
||||||
summary: Generates Windows `.syso` file
|
|
||||||
dir: build
|
|
||||||
cmds:
|
|
||||||
- wails3 generate syso -arch {{.ARCH}} -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
|
|
||||||
create:nsis:installer:
|
|
||||||
summary: Creates an NSIS installer
|
|
||||||
label: "NSIS Installer ({{.ARCH}})"
|
|
||||||
dir: build/nsis
|
|
||||||
sources:
|
|
||||||
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}.exe"
|
|
||||||
generates:
|
|
||||||
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}-{{.ARCH}}-installer.exe"
|
|
||||||
deps:
|
|
||||||
- task: build:windows
|
|
||||||
vars:
|
|
||||||
PRODUCTION: "true"
|
|
||||||
ARCH: '{{.ARCH}}'
|
|
||||||
cmds:
|
|
||||||
- makensis -DARG_WAILS_'{{.ARG_FLAG}}'_BINARY="{{.ROOT_DIR}}\{{.BIN_DIR}}\{{.APP_NAME}}.exe" project.nsi
|
|
||||||
vars:
|
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
|
||||||
ARG_FLAG: '{{if eq .ARCH "amd64"}}AMD64{{else}}ARM64{{end}}'
|
|
||||||
|
|
||||||
## ------> Darwin <------
|
|
||||||
|
|
||||||
package:darwin:
|
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
|
||||||
platforms: [ darwin ]
|
|
||||||
deps:
|
|
||||||
- task: build:darwin
|
|
||||||
vars:
|
|
||||||
PRODUCTION: "true"
|
|
||||||
cmds:
|
|
||||||
- task: create:app:bundle
|
|
||||||
|
|
||||||
package:darwin:arm64:
|
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
|
||||||
platforms: [ darwin/arm64 ]
|
|
||||||
deps:
|
|
||||||
- task: package:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: arm64
|
|
||||||
|
|
||||||
package:darwin:amd64:
|
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
|
||||||
platforms: [ darwin/amd64 ]
|
|
||||||
deps:
|
|
||||||
- task: package:darwin
|
|
||||||
vars:
|
|
||||||
ARCH: amd64
|
|
||||||
|
|
||||||
create:app:bundle:
|
|
||||||
summary: Creates an `.app` bundle
|
|
||||||
cmds:
|
|
||||||
- mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources}
|
|
||||||
- cp build/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources
|
|
||||||
- cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS
|
|
||||||
- cp build/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents
|
|
||||||
|
|
||||||
## ------> Linux <------
|
|
||||||
|
|
||||||
package:linux:
|
|
||||||
summary: Packages a production build of the application for Linux
|
|
||||||
platforms: [ linux ]
|
|
||||||
deps:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
PRODUCTION: "true"
|
|
||||||
cmds:
|
|
||||||
- task: create:appimage
|
|
||||||
|
|
||||||
create:appimage:
|
|
||||||
summary: Creates an AppImage
|
|
||||||
dir: build/appimage
|
|
||||||
platforms: [ linux ]
|
|
||||||
deps:
|
|
||||||
- task: build:linux
|
|
||||||
vars:
|
|
||||||
PRODUCTION: "true"
|
|
||||||
- task: generate:linux:dotdesktop
|
|
||||||
cmds:
|
|
||||||
# Copy binary + icon to appimage dir
|
|
||||||
- cp {{.APP_BINARY}} {{.APP_NAME}}
|
|
||||||
- cp ../appicon.png appicon.png
|
|
||||||
# Generate AppImage
|
|
||||||
- wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/appimage
|
|
||||||
vars:
|
|
||||||
APP_NAME: '{{.APP_NAME}}'
|
|
||||||
APP_BINARY: '../../bin/{{.APP_NAME}}'
|
|
||||||
ICON: '../appicon.png'
|
|
||||||
DESKTOP_FILE: '{{.APP_NAME}}.desktop'
|
|
||||||
OUTPUT_DIR: '../../bin'
|
|
||||||
|
|
||||||
generate:linux:dotdesktop:
|
|
||||||
summary: Generates a `.desktop` file
|
|
||||||
dir: build
|
|
||||||
sources:
|
|
||||||
- "appicon.png"
|
|
||||||
generates:
|
|
||||||
- '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
|
||||||
cmds:
|
|
||||||
- mkdir -p {{.ROOT_DIR}}/build/appimage
|
|
||||||
# Run `wails3 generate .desktop -help` for all the options
|
|
||||||
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}"
|
|
||||||
# -comment "A comment"
|
|
||||||
# -terminal "true"
|
|
||||||
# -version "1.0"
|
|
||||||
# -genericname "Generic Name"
|
|
||||||
# -keywords "keyword1;keyword2;"
|
|
||||||
# -startupnotify "true"
|
|
||||||
# -mimetype "application/x-extension1;application/x-extension2;"
|
|
||||||
|
|
||||||
vars:
|
|
||||||
APP_NAME: '{{.APP_NAME}}'
|
|
||||||
EXEC: '{{.APP_NAME}}'
|
|
||||||
ICON: 'appicon'
|
|
||||||
CATEGORIES: 'Development;'
|
|
||||||
OUTPUTFILE: '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
|
||||||
|
|
||||||
## -------------------------- Misc -------------------------- ##
|
|
||||||
|
|
||||||
|
|
||||||
generate:icons:
|
|
||||||
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
|
||||||
dir: build
|
|
||||||
sources:
|
|
||||||
- "appicon.png"
|
|
||||||
generates:
|
|
||||||
- "icons.icns"
|
|
||||||
- "icons.ico"
|
|
||||||
cmds:
|
|
||||||
# Generates both .ico and .icns files
|
|
||||||
- wails3 generate icons -input appicon.png
|
|
||||||
|
|
||||||
install:frontend:deps:
|
|
||||||
summary: Install frontend dependencies
|
|
||||||
dir: ../web
|
|
||||||
sources:
|
|
||||||
- package.json
|
|
||||||
- package-lock.json
|
|
||||||
generates:
|
|
||||||
- node_modules/*
|
|
||||||
preconditions:
|
|
||||||
- sh: npm version
|
|
||||||
msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/"
|
|
||||||
cmds:
|
|
||||||
- npm install --silent --no-progress
|
|
||||||
|
|
||||||
build:frontend:
|
|
||||||
summary: Build the frontend project
|
|
||||||
dir: ../web
|
|
||||||
sources:
|
|
||||||
- "**/*"
|
|
||||||
generates:
|
|
||||||
- dist/*
|
|
||||||
deps:
|
|
||||||
- install:frontend:deps
|
|
||||||
- task: generate:bindings
|
|
||||||
vars:
|
|
||||||
BUILD_FLAGS: '{{.BUILD_FLAGS}}'
|
|
||||||
cmds:
|
|
||||||
- npm run build -q
|
|
||||||
|
|
||||||
generate:bindings:
|
|
||||||
summary: Generates bindings for the frontend
|
|
||||||
sources:
|
|
||||||
- "**/*.go"
|
|
||||||
- go.mod
|
|
||||||
- go.sum
|
|
||||||
generates: []
|
|
||||||
#- "../web/src/wails/**/*"
|
|
||||||
cmds: []
|
|
||||||
# For a complete list of options, run `wails3 generate bindings -help`
|
|
||||||
#- wails3 generate bindings -d ../web/src/wails -f '{{.BUILD_FLAGS}}'
|
|
||||||
|
|
||||||
go:mod:tidy:
|
|
||||||
summary: Runs `go mod tidy`
|
|
||||||
internal: true
|
|
||||||
generates:
|
|
||||||
- go.sum
|
|
||||||
sources:
|
|
||||||
- go.mod
|
|
||||||
cmds:
|
|
||||||
- go mod tidy
|
|
||||||
|
|
||||||
# ----------------------- dev ----------------------- #
|
|
||||||
|
|
||||||
|
|
||||||
run:
|
run:
|
||||||
summary: Runs the application
|
summary: Runs the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: run:{{OS}}
|
- task: "{{OS}}:run"
|
||||||
|
|
||||||
run:windows:
|
|
||||||
cmds:
|
|
||||||
- '{{.BIN_DIR}}\\{{.APP_NAME}}.exe'
|
|
||||||
|
|
||||||
run:linux:
|
|
||||||
cmds:
|
|
||||||
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
|
||||||
|
|
||||||
run:darwin:
|
|
||||||
cmds:
|
|
||||||
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
|
||||||
|
|
||||||
dev:frontend:
|
|
||||||
summary: Runs the frontend in development mode
|
|
||||||
dir: ../web
|
|
||||||
deps:
|
|
||||||
- task: install:frontend:deps
|
|
||||||
cmds:
|
|
||||||
- npm run dev -- --port {{.VITE_PORT}} --strictPort
|
|
||||||
|
|
||||||
dev:
|
dev:
|
||||||
summary: Runs the application in development mode
|
summary: Runs the application in development mode
|
||||||
cmds:
|
cmds:
|
||||||
- wails3 dev -config ./build/devmode.config.yaml -port {{.VITE_PORT}}
|
- wails3 dev -config ./build/config.yml -port {{.VITE_PORT}}
|
||||||
|
|
||||||
dev:reload:
|
darwin:build:universal:
|
||||||
summary: Reloads the application
|
summary: Builds darwin universal binary (arm64 + amd64)
|
||||||
cmds:
|
cmds:
|
||||||
- task: run
|
- task: darwin:build
|
||||||
|
vars:
|
||||||
|
ARCH: amd64
|
||||||
|
- mv {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-amd64
|
||||||
|
- task: darwin:build
|
||||||
|
vars:
|
||||||
|
ARCH: arm64
|
||||||
|
- mv {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-arm64
|
||||||
|
- lipo -create -output {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-amd64 {{.BIN_DIR}}/{{.APP_NAME}}-arm64
|
||||||
|
- rm {{.BIN_DIR}}/{{.APP_NAME}}-amd64 {{.BIN_DIR}}/{{.APP_NAME}}-arm64
|
||||||
|
|
||||||
|
darwin:package:universal:
|
||||||
|
summary: Packages darwin universal binary (arm64 + amd64)
|
||||||
|
deps:
|
||||||
|
- darwin:build:universal
|
||||||
|
cmds:
|
||||||
|
- task: darwin:create:app:bundle
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<string>true</string>
|
<string>true</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© 2024, Tulir Asokan</string>
|
<string>© 2024, gomuks authors</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsLocalNetworking</key>
|
<key>NSAllowsLocalNetworking</key>
|
||||||
|
|
|
@ -22,6 +22,6 @@
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<string>true</string>
|
<string>true</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© 2024, Tulir Asokan</string>
|
<string>© 2024, gomuks authors</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
75
desktop/build/Taskfile.common.yml
Normal file
75
desktop/build/Taskfile.common.yml
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
go:mod:tidy:
|
||||||
|
summary: Runs `go mod tidy`
|
||||||
|
internal: true
|
||||||
|
generates:
|
||||||
|
- go.sum
|
||||||
|
sources:
|
||||||
|
- go.mod
|
||||||
|
cmds:
|
||||||
|
- go mod tidy
|
||||||
|
|
||||||
|
install:frontend:deps:
|
||||||
|
summary: Install frontend dependencies
|
||||||
|
dir: ../web
|
||||||
|
sources:
|
||||||
|
- package.json
|
||||||
|
- package-lock.json
|
||||||
|
generates:
|
||||||
|
- node_modules/*
|
||||||
|
preconditions:
|
||||||
|
- sh: npm version
|
||||||
|
msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/"
|
||||||
|
cmds:
|
||||||
|
- npm install
|
||||||
|
|
||||||
|
build:frontend:
|
||||||
|
summary: Build the frontend project
|
||||||
|
dir: ../web
|
||||||
|
sources:
|
||||||
|
- "**/*"
|
||||||
|
generates:
|
||||||
|
- dist/*
|
||||||
|
deps:
|
||||||
|
- task: install:frontend:deps
|
||||||
|
#- task: generate:bindings
|
||||||
|
cmds:
|
||||||
|
- npm run build -q
|
||||||
|
|
||||||
|
generate:bindings:
|
||||||
|
summary: Generates bindings for the frontend
|
||||||
|
sources:
|
||||||
|
- "**/*.go"
|
||||||
|
- go.mod
|
||||||
|
- go.sum
|
||||||
|
generates: []
|
||||||
|
#- "frontend/bindings/**/*"
|
||||||
|
cmds: []
|
||||||
|
#- wails3 generate bindings -f '{{.BUILD_FLAGS}}'{{if .UseTypescript}} -ts{{end}}
|
||||||
|
|
||||||
|
generate:icons:
|
||||||
|
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
||||||
|
dir: build
|
||||||
|
sources:
|
||||||
|
- "appicon.png"
|
||||||
|
generates:
|
||||||
|
- "icons.icns"
|
||||||
|
- "icons.ico"
|
||||||
|
cmds:
|
||||||
|
- wails3 generate icons -input appicon.png
|
||||||
|
|
||||||
|
dev:frontend:
|
||||||
|
summary: Runs the frontend in development mode
|
||||||
|
dir: ../web
|
||||||
|
deps:
|
||||||
|
- task: install:frontend:deps
|
||||||
|
cmds:
|
||||||
|
- npm run dev -- --port {{.VITE_PORT}} --strictPort
|
||||||
|
|
||||||
|
update:build-assets:
|
||||||
|
summary: Updates the build assets
|
||||||
|
dir: build
|
||||||
|
cmds:
|
||||||
|
- wails3 update build-assets -name "{{.APP_NAME}}" -binaryname "{{.APP_NAME}}" -config config.yml -dir .
|
47
desktop/build/Taskfile.darwin.yml
Normal file
47
desktop/build/Taskfile.darwin.yml
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
includes:
|
||||||
|
common: Taskfile.common.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
build:
|
||||||
|
summary: Creates a production build of the application
|
||||||
|
deps: []
|
||||||
|
#- task: common:go:mod:tidy
|
||||||
|
#- task: common:build:frontend
|
||||||
|
#- task: common:generate:icons
|
||||||
|
cmds:
|
||||||
|
- MAUTRIX_VERSION=$(cat go.mod | grep 'maunium.net/go/mautrix ' | awk '{ print $2 }')
|
||||||
|
- GO_LDFLAGS="-s -w -X go.mau.fi/gomuks/version.Tag=$CI_COMMIT_TAG -X go.mau.fi/gomuks/version.Commit=$CI_COMMIT_SHA -X 'go.mau.fi/gomuks/version.BuildTime=`date -Iseconds`' -X 'maunium.net/go/mautrix.GoModVersion=$MAUTRIX_VERSION'"
|
||||||
|
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}
|
||||||
|
vars:
|
||||||
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath{{else}}-gcflags=all="-l"{{end}}'
|
||||||
|
env:
|
||||||
|
GOOS: darwin
|
||||||
|
CGO_ENABLED: 1
|
||||||
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
CGO_CFLAGS: "-mmacosx-version-min=11.0"
|
||||||
|
CGO_LDFLAGS: "-mmacosx-version-min=11.0"
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
||||||
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
|
package:
|
||||||
|
summary: Packages a production build of the application into a `.app` bundle
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- task: create:app:bundle
|
||||||
|
|
||||||
|
create:app:bundle:
|
||||||
|
summary: Creates an `.app` bundle
|
||||||
|
cmds:
|
||||||
|
- mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources}
|
||||||
|
- cp build/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources
|
||||||
|
- cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS
|
||||||
|
- cp build/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents
|
||||||
|
|
||||||
|
run:
|
||||||
|
cmds:
|
||||||
|
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
116
desktop/build/Taskfile.linux.yml
Normal file
116
desktop/build/Taskfile.linux.yml
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
includes:
|
||||||
|
common: Taskfile.common.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
build:
|
||||||
|
summary: Builds the application for Linux
|
||||||
|
deps: []
|
||||||
|
#- task: common:go:mod:tidy
|
||||||
|
#- task: common:build:frontend
|
||||||
|
#- task: common:generate:icons
|
||||||
|
cmds:
|
||||||
|
- MAUTRIX_VERSION=$(cat go.mod | grep 'maunium.net/go/mautrix ' | awk '{ print $2 }')
|
||||||
|
- GO_LDFLAGS="-s -w -X go.mau.fi/gomuks/version.Tag=$CI_COMMIT_TAG -X go.mau.fi/gomuks/version.Commit=$CI_COMMIT_SHA -X 'go.mau.fi/gomuks/version.BuildTime=`date -Iseconds`' -X 'maunium.net/go/mautrix.GoModVersion=$MAUTRIX_VERSION'"
|
||||||
|
- go build {{.BUILD_FLAGS}} -ldflags "$GO_LDFLAGS" -o {{.BIN_DIR}}/{{.APP_NAME}}
|
||||||
|
vars:
|
||||||
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath{{else}}-gcflags=all="-l"{{end}}'
|
||||||
|
env:
|
||||||
|
GOOS: linux
|
||||||
|
CGO_ENABLED: 1
|
||||||
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
|
package:
|
||||||
|
summary: Packages a production build of the application for Linux
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- task: create:appimage
|
||||||
|
- task: create:deb
|
||||||
|
- task: create:rpm
|
||||||
|
- task: create:aur
|
||||||
|
|
||||||
|
create:appimage:
|
||||||
|
summary: Creates an AppImage
|
||||||
|
dir: build/appimage
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
- task: generate:dotdesktop
|
||||||
|
cmds:
|
||||||
|
- cp {{.APP_BINARY}} {{.APP_NAME}}
|
||||||
|
- cp ../appicon.png appicon.png
|
||||||
|
- wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/appimage
|
||||||
|
vars:
|
||||||
|
APP_NAME: '{{.APP_NAME}}'
|
||||||
|
APP_BINARY: '../../bin/{{.APP_NAME}}'
|
||||||
|
ICON: '../appicon.png'
|
||||||
|
DESKTOP_FILE: '{{.APP_NAME}}.desktop'
|
||||||
|
OUTPUT_DIR: '../../bin'
|
||||||
|
|
||||||
|
create:deb:
|
||||||
|
summary: Creates a deb package
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- task: generate:dotdesktop
|
||||||
|
- task: generate:deb
|
||||||
|
|
||||||
|
create:rpm:
|
||||||
|
summary: Creates a rpm package
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- task: generate:dotdesktop
|
||||||
|
- task: generate:rpm
|
||||||
|
|
||||||
|
create:aur:
|
||||||
|
summary: Creates a arch linux packager package
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- task: generate:dotdesktop
|
||||||
|
- task: generate:aur
|
||||||
|
|
||||||
|
generate:deb:
|
||||||
|
summary: Creates a deb package
|
||||||
|
cmds:
|
||||||
|
- wails3 tool package -name {{.APP_NAME}} -format deb -config ./build/nfpm/nfpm.yaml
|
||||||
|
|
||||||
|
generate:rpm:
|
||||||
|
summary: Creates a rpm package
|
||||||
|
cmds:
|
||||||
|
- wails3 tool package -name {{.APP_NAME}} -format rpm -config ./build/nfpm/nfpm.yaml
|
||||||
|
|
||||||
|
generate:aur:
|
||||||
|
summary: Creates a arch linux packager package
|
||||||
|
cmds:
|
||||||
|
- wails3 tool package -name {{.APP_NAME}} -format arch -config ./build/nfpm/nfpm.yaml
|
||||||
|
|
||||||
|
generate:dotdesktop:
|
||||||
|
summary: Generates a `.desktop` file
|
||||||
|
dir: build
|
||||||
|
cmds:
|
||||||
|
- mkdir -p {{.ROOT_DIR}}/build/appimage
|
||||||
|
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}"
|
||||||
|
vars:
|
||||||
|
APP_NAME: '{{.APP_NAME}}'
|
||||||
|
EXEC: '{{.APP_NAME}}'
|
||||||
|
ICON: 'appicon'
|
||||||
|
CATEGORIES: 'Development;'
|
||||||
|
OUTPUTFILE: '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
||||||
|
|
||||||
|
run:
|
||||||
|
cmds:
|
||||||
|
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
58
desktop/build/Taskfile.windows.yml
Normal file
58
desktop/build/Taskfile.windows.yml
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
includes:
|
||||||
|
common: Taskfile.common.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
build:
|
||||||
|
summary: Builds the application for Windows
|
||||||
|
deps:
|
||||||
|
#- task: common:go:mod:tidy
|
||||||
|
#- task: common:build:frontend
|
||||||
|
#- task: common:generate:icons
|
||||||
|
- task: generate:syso
|
||||||
|
cmds:
|
||||||
|
- MAUTRIX_VERSION=$(cat go.mod | grep 'maunium.net/go/mautrix ' | awk '{ print $2 }')
|
||||||
|
- GO_LDFLAGS="-s -w -H windowsgui -X go.mau.fi/gomuks/version.Tag=$CI_COMMIT_TAG -X go.mau.fi/gomuks/version.Commit=$CI_COMMIT_SHA -X 'go.mau.fi/gomuks/version.BuildTime=`date -Iseconds`' -X 'maunium.net/go/mautrix.GoModVersion=$MAUTRIX_VERSION'"
|
||||||
|
- go build {{.BUILD_FLAGS}} -ldflags "$GO_LDFLAGS" -o {{.BIN_DIR}}/{{.APP_NAME}}.exe
|
||||||
|
- cmd: powershell Remove-item *.syso
|
||||||
|
platforms: [windows]
|
||||||
|
- cmd: rm -f *.syso
|
||||||
|
platforms: [linux, darwin]
|
||||||
|
vars:
|
||||||
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath{{else}}-gcflags=all="-l"{{end}}'
|
||||||
|
env:
|
||||||
|
GOOS: windows
|
||||||
|
CGO_ENABLED: 1
|
||||||
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
|
package:
|
||||||
|
summary: Packages a production build of the application into a `.exe` bundle
|
||||||
|
cmds:
|
||||||
|
- task: create:nsis:installer
|
||||||
|
|
||||||
|
generate:syso:
|
||||||
|
summary: Generates Windows `.syso` file
|
||||||
|
dir: build
|
||||||
|
cmds:
|
||||||
|
- wails3 generate syso -arch {{.ARCH}} -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails_windows_{{.ARCH}}.syso
|
||||||
|
vars:
|
||||||
|
ARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
|
||||||
|
create:nsis:installer:
|
||||||
|
summary: Creates an NSIS installer
|
||||||
|
dir: build/nsis
|
||||||
|
deps:
|
||||||
|
- task: build
|
||||||
|
vars:
|
||||||
|
PRODUCTION: "true"
|
||||||
|
cmds:
|
||||||
|
- makensis -DARG_WAILS_{{.ARG_FLAG}}_BINARY="{{.ROOT_DIR}}\{{.BIN_DIR}}\{{.APP_NAME}}.exe" project.nsi
|
||||||
|
vars:
|
||||||
|
ARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
ARG_FLAG: '{{if eq .ARCH "amd64"}}AMD64{{else}}ARM64{{end}}'
|
||||||
|
|
||||||
|
run:
|
||||||
|
cmds:
|
||||||
|
- '{{.BIN_DIR}}\\{{.APP_NAME}}.exe'
|
60
desktop/build/config.yml
Normal file
60
desktop/build/config.yml
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
# This file contains the configuration for this project.
|
||||||
|
# When you update `info` or `fileAssociations`, run `wails3 task common:update:build-assets` to update the assets.
|
||||||
|
# Note that this will overwrite any changes you have made to the assets.
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
info:
|
||||||
|
companyName: ""
|
||||||
|
productName: "gomuks desktop"
|
||||||
|
productIdentifier: "fi.mau.gomuks.desktop"
|
||||||
|
description: "A Matrix client written in Go and React"
|
||||||
|
copyright: "© 2024, gomuks authors"
|
||||||
|
comments: ""
|
||||||
|
version: "0.4.0"
|
||||||
|
|
||||||
|
# Dev mode configuration
|
||||||
|
dev_mode:
|
||||||
|
root_path: .
|
||||||
|
log_level: warn
|
||||||
|
debounce: 1000
|
||||||
|
ignore:
|
||||||
|
dir:
|
||||||
|
- .git
|
||||||
|
- node_modules
|
||||||
|
- frontend
|
||||||
|
- bin
|
||||||
|
file:
|
||||||
|
- .DS_Store
|
||||||
|
- .gitignore
|
||||||
|
- .gitkeep
|
||||||
|
watched_extension:
|
||||||
|
- "*.go"
|
||||||
|
git_ignore: true
|
||||||
|
executes:
|
||||||
|
- cmd: wails3 task common:install:frontend:deps
|
||||||
|
type: once
|
||||||
|
- cmd: wails3 task common:dev:frontend
|
||||||
|
type: background
|
||||||
|
- cmd: go mod tidy
|
||||||
|
type: blocking
|
||||||
|
- cmd: wails3 task build
|
||||||
|
type: blocking
|
||||||
|
- cmd: wails3 task run
|
||||||
|
type: primary
|
||||||
|
|
||||||
|
# File Associations
|
||||||
|
# More information at: https://v3alpha.wails.io/noit/done/yet
|
||||||
|
fileAssociations:
|
||||||
|
# - ext: wails
|
||||||
|
# name: Wails
|
||||||
|
# description: Wails Application File
|
||||||
|
# iconName: wailsFileIcon
|
||||||
|
# role: Editor
|
||||||
|
# - ext: jpg
|
||||||
|
# name: JPEG
|
||||||
|
# description: Image File
|
||||||
|
# iconName: jpegFileIcon
|
||||||
|
# role: Editor
|
||||||
|
|
||||||
|
# Other data
|
||||||
|
other: []
|
|
@ -1,28 +0,0 @@
|
||||||
config:
|
|
||||||
root_path: .
|
|
||||||
log_level: warn
|
|
||||||
debounce: 1000
|
|
||||||
ignore:
|
|
||||||
dir:
|
|
||||||
- .git
|
|
||||||
- node_modules
|
|
||||||
- frontend
|
|
||||||
- bin
|
|
||||||
file:
|
|
||||||
- .DS_Store
|
|
||||||
- .gitignore
|
|
||||||
- .gitkeep
|
|
||||||
watched_extension:
|
|
||||||
- "*.go"
|
|
||||||
git_ignore: true
|
|
||||||
executes:
|
|
||||||
- cmd: wails3 task install:frontend:deps
|
|
||||||
type: once
|
|
||||||
- cmd: wails3 task dev:frontend
|
|
||||||
type: background
|
|
||||||
- cmd: go mod tidy
|
|
||||||
type: blocking
|
|
||||||
- cmd: wails3 task build
|
|
||||||
type: blocking
|
|
||||||
- cmd: wails3 task run
|
|
||||||
type: primary
|
|
Binary file not shown.
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
@ -6,8 +6,8 @@
|
||||||
"0000": {
|
"0000": {
|
||||||
"ProductVersion": "0.4.0",
|
"ProductVersion": "0.4.0",
|
||||||
"CompanyName": "",
|
"CompanyName": "",
|
||||||
"FileDescription": "",
|
"FileDescription": "A Matrix client written in Go and React",
|
||||||
"LegalCopyright": "© 2024, Tulir Asokan",
|
"LegalCopyright": "© 2024, gomuks authors",
|
||||||
"ProductName": "gomuks desktop",
|
"ProductName": "gomuks desktop",
|
||||||
"Comments": ""
|
"Comments": ""
|
||||||
}
|
}
|
||||||
|
|
50
desktop/build/nfpm/nfpm.yaml
Normal file
50
desktop/build/nfpm/nfpm.yaml
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# Feel free to remove those if you don't want/need to use them.
|
||||||
|
# Make sure to check the documentation at https://nfpm.goreleaser.com
|
||||||
|
#
|
||||||
|
# The lines below are called `modelines`. See `:help modeline`
|
||||||
|
|
||||||
|
name: "gomuks-desktop"
|
||||||
|
arch: ${GOARCH}
|
||||||
|
platform: "linux"
|
||||||
|
version: "0.4.0"
|
||||||
|
section: "default"
|
||||||
|
priority: "extra"
|
||||||
|
maintainer: ${GIT_COMMITTER_NAME} <${GIT_COMMITTER_EMAIL}>
|
||||||
|
description: "A Matrix client written in Go and React"
|
||||||
|
vendor: ""
|
||||||
|
homepage: "https://wails.io"
|
||||||
|
license: "MIT"
|
||||||
|
release: "1"
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: "./bin/gomuks-desktop"
|
||||||
|
dst: "/usr/local/bin/gomuks-desktop"
|
||||||
|
- src: "./build/appicon.png"
|
||||||
|
dst: "/usr/share/icons/hicolor/128x128/apps/gomuks-desktop.png"
|
||||||
|
- src: "./build/gomuks-desktop.desktop"
|
||||||
|
dst: "/usr/share/applications/gomuks-desktop.desktop"
|
||||||
|
|
||||||
|
depends:
|
||||||
|
- gtk3
|
||||||
|
- libwebkit2gtk
|
||||||
|
|
||||||
|
# replaces:
|
||||||
|
# - foobar
|
||||||
|
# provides:
|
||||||
|
# - bar
|
||||||
|
# depends:
|
||||||
|
# - gtk3
|
||||||
|
# - libwebkit2gtk
|
||||||
|
# recommends:
|
||||||
|
# - whatever
|
||||||
|
# suggests:
|
||||||
|
# - something-else
|
||||||
|
# conflicts:
|
||||||
|
# - not-foo
|
||||||
|
# - not-bar
|
||||||
|
# changelog: "changelog.yaml"
|
||||||
|
# scripts:
|
||||||
|
# preinstall: ./build/nfpm/scripts/preinstall.sh
|
||||||
|
# postinstall: ./build/nfpm/scripts/postinstall.sh
|
||||||
|
# preremove: ./build/nfpm/scripts/preremove.sh
|
||||||
|
# postremove: ./build/nfpm/scripts/postremove.sh
|
1
desktop/build/nfpm/scripts/postinstall.sh
Normal file
1
desktop/build/nfpm/scripts/postinstall.sh
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/bash
|
1
desktop/build/nfpm/scripts/postremove.sh
Normal file
1
desktop/build/nfpm/scripts/postremove.sh
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/bash
|
1
desktop/build/nfpm/scripts/preinstall.sh
Normal file
1
desktop/build/nfpm/scripts/preinstall.sh
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/bash
|
1
desktop/build/nfpm/scripts/preremove.sh
Normal file
1
desktop/build/nfpm/scripts/preremove.sh
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/bash
|
|
@ -20,10 +20,10 @@ Unicode true
|
||||||
## The following information is taken from the wails_tools.nsh file, but they can be overwritten here.
|
## The following information is taken from the wails_tools.nsh file, but they can be overwritten here.
|
||||||
####
|
####
|
||||||
## !define INFO_PROJECTNAME "my-project" # Default "gomuks-desktop"
|
## !define INFO_PROJECTNAME "my-project" # Default "gomuks-desktop"
|
||||||
## !define INFO_COMPANYNAME "My Company" # Default "My Company"
|
## !define INFO_COMPANYNAME "My Company" # Default ""
|
||||||
## !define INFO_PRODUCTNAME "My Product Name" # Default "My Product"
|
## !define INFO_PRODUCTNAME "My Product Name" # Default "gomuks desktop"
|
||||||
## !define INFO_PRODUCTVERSION "1.0.0" # Default "0.1.0"
|
## !define INFO_PRODUCTVERSION "1.0.0" # Default "0.1.0"
|
||||||
## !define INFO_COPYRIGHT "(c) Now, My Company" # Default "© now, My Company"
|
## !define INFO_COPYRIGHT "(c) Now, My Company" # Default "© gomuks authors"
|
||||||
###
|
###
|
||||||
## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
|
## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
|
||||||
## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
||||||
|
@ -91,6 +91,8 @@ Section
|
||||||
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||||
CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||||
|
|
||||||
|
!insertmacro wails.associateFiles
|
||||||
|
|
||||||
!insertmacro wails.writeUninstaller
|
!insertmacro wails.writeUninstaller
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
@ -104,5 +106,7 @@ Section "uninstall"
|
||||||
Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
|
Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
|
||||||
Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
|
Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
|
||||||
|
|
||||||
|
!insertmacro wails.unassociateFiles
|
||||||
|
|
||||||
!insertmacro wails.deleteUninstaller
|
!insertmacro wails.deleteUninstaller
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
|
@ -8,16 +8,16 @@
|
||||||
!define INFO_PROJECTNAME "gomuks-desktop"
|
!define INFO_PROJECTNAME "gomuks-desktop"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_COMPANYNAME
|
!ifndef INFO_COMPANYNAME
|
||||||
!define INFO_COMPANYNAME "My Company"
|
!define INFO_COMPANYNAME ""
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_PRODUCTNAME
|
!ifndef INFO_PRODUCTNAME
|
||||||
!define INFO_PRODUCTNAME "My Product"
|
!define INFO_PRODUCTNAME "gomuks desktop"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_PRODUCTVERSION
|
!ifndef INFO_PRODUCTVERSION
|
||||||
!define INFO_PRODUCTVERSION "0.1.0"
|
!define INFO_PRODUCTVERSION "0.4.0"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_COPYRIGHT
|
!ifndef INFO_COPYRIGHT
|
||||||
!define INFO_COPYRIGHT "© now, My Company"
|
!define INFO_COPYRIGHT "© 2024, gomuks authors"
|
||||||
!endif
|
!endif
|
||||||
!ifndef PRODUCT_EXECUTABLE
|
!ifndef PRODUCT_EXECUTABLE
|
||||||
!define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
|
!define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
|
||||||
|
@ -177,3 +177,36 @@ RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}"
|
||||||
SetDetailsPrint both
|
SetDetailsPrint both
|
||||||
ok:
|
ok:
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
|
# Copy of APP_ASSOCIATE and APP_UNASSOCIATE macros from here https://gist.github.com/nikku/281d0ef126dbc215dd58bfd5b3a5cd5b
|
||||||
|
!macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND
|
||||||
|
; Backup the previously associated file class
|
||||||
|
ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" ""
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "${FILECLASS}_backup" "$R0"
|
||||||
|
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "${FILECLASS}"
|
||||||
|
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}" "" `${DESCRIPTION}`
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\DefaultIcon" "" `${ICON}`
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell" "" "open"
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open" "" `${COMMANDTEXT}`
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open\command" "" `${COMMAND}`
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro APP_UNASSOCIATE EXT FILECLASS
|
||||||
|
; Backup the previously associated file class
|
||||||
|
ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" `${FILECLASS}_backup`
|
||||||
|
WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "$R0"
|
||||||
|
|
||||||
|
DeleteRegKey SHELL_CONTEXT `Software\Classes\${FILECLASS}`
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro wails.associateFiles
|
||||||
|
; Create file associations
|
||||||
|
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro wails.unassociateFiles
|
||||||
|
; Delete app associations
|
||||||
|
|
||||||
|
!macroend
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
<assemblyIdentity type="win32" name="com.wails.gomuks-desktop" version="0.1.0" processorArchitecture="*"/>
|
<assemblyIdentity type="win32" name="fi.mau.gomuks.desktop" version="0.4.0" processorArchitecture="*"/>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||||
|
|
|
@ -123,7 +123,7 @@ func main() {
|
||||||
ch := &CommandHandler{Gomuks: gmx, Ctx: cmdCtx}
|
ch := &CommandHandler{Gomuks: gmx, Ctx: cmdCtx}
|
||||||
app := application.New(application.Options{
|
app := application.New(application.Options{
|
||||||
Name: "gomuks-desktop",
|
Name: "gomuks-desktop",
|
||||||
Description: "A Matrix client written in Go",
|
Description: "A Matrix client written in Go and React",
|
||||||
Services: []application.Service{
|
Services: []application.Service{
|
||||||
application.NewService(
|
application.NewService(
|
||||||
&PointableHandler{gmx.CreateAPIRouter()},
|
&PointableHandler{gmx.CreateAPIRouter()},
|
||||||
|
|
Loading…
Add table
Reference in a new issue