mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
Support wails package on Windows
This commit is contained in:
parent
f84bb6a287
commit
4ea6a2d120
12 changed files with 420 additions and 93 deletions
|
|
@ -1,5 +1,5 @@
|
|||
" ",Mac,Windows,Linux
|
||||
`wails init`,:material-check-bold:," ",:material-check-bold:
|
||||
`wails build`,:material-check-bold:," ",:material-check-bold:
|
||||
`wails init`,:material-check-bold:,:material-check-bold:,:material-check-bold:
|
||||
`wails build`,:material-check-bold:,:material-check-bold:,:material-check-bold:
|
||||
`wails dev`," "," "," "
|
||||
`wails package`," "," "," "
|
||||
`wails package`," ",:material-check-bold:," "
|
||||
|
|
|
|||
|
|
|
@ -22,7 +22,7 @@ type BuildAssetsOptions struct {
|
|||
ProductDescription string `description:"The description of the product" default:"My Product Description"`
|
||||
ProductVersion string `description:"The version of the product" default:"0.1.0"`
|
||||
ProductCompany string `description:"The company of the product" default:"My Company"`
|
||||
ProductCopyright string `description:"The copyright notice"`
|
||||
ProductCopyright string `description:"The copyright notice" default:"(c) now, My Company"`
|
||||
ProductComments string `description:"Comments to add to the generated files" default:"This is a comment"`
|
||||
ProductIdentifier string `description:"The product identifier, e.g com.mycompany.myproduct"`
|
||||
Silent bool `description:"Suppress output to console"`
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>My Productname</string>
|
||||
<string>{{.ProductName}}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>{{.Name}}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
|
|||
108
v3/internal/commands/build_assets/nsis/project.nsi.tmpl
Normal file
108
v3/internal/commands/build_assets/nsis/project.nsi.tmpl
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
Unicode true
|
||||
|
||||
####
|
||||
## Please note: Template replacements don't work in this file. They are provided with default defines like
|
||||
## mentioned underneath.
|
||||
## If the keyword is not defined, "wails_tools.nsh" will populate them.
|
||||
## If they are defined here, "wails_tools.nsh" will not touch them. This allows you to use this project.nsi manually
|
||||
## from outside of Wails for debugging and development of the installer.
|
||||
##
|
||||
## For development first make a wails nsis build to populate the "wails_tools.nsh":
|
||||
## > wails build --target windows/amd64 --nsis
|
||||
## Then you can call makensis on this file with specifying the path to your binary:
|
||||
## For a AMD64 only installer:
|
||||
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe
|
||||
## For a ARM64 only installer:
|
||||
## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe
|
||||
## For a installer with both architectures:
|
||||
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe
|
||||
####
|
||||
## The following information is taken from the wails_tools.nsh file, but they can be overwritten here.
|
||||
####
|
||||
## !define INFO_PROJECTNAME "my-project" # Default "{{.Name}}"
|
||||
## !define INFO_COMPANYNAME "My Company" # Default "{{.ProductCompany}}"
|
||||
## !define INFO_PRODUCTNAME "My Product Name" # Default "{{.ProductName}}"
|
||||
## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.ProductVersion}}"
|
||||
## !define INFO_COPYRIGHT "(c) Now, My Company" # Default "{{.ProductCopyright}}"
|
||||
###
|
||||
## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
|
||||
## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
||||
####
|
||||
## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html
|
||||
####
|
||||
## Include the wails tools
|
||||
####
|
||||
!include "wails_tools.nsh"
|
||||
|
||||
# The version information for this two must consist of 4 parts
|
||||
VIProductVersion "${INFO_PRODUCTVERSION}.0"
|
||||
VIFileVersion "${INFO_PRODUCTVERSION}.0"
|
||||
|
||||
VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}"
|
||||
VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer"
|
||||
VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}"
|
||||
VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}"
|
||||
VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}"
|
||||
VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
|
||||
|
||||
# Enable HiDPI support. https://nsis.sourceforge.io/Reference/ManifestDPIAware
|
||||
ManifestDPIAware true
|
||||
|
||||
!include "MUI.nsh"
|
||||
|
||||
!define MUI_ICON "..\icon.ico"
|
||||
!define MUI_UNICON "..\icon.ico"
|
||||
# !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314
|
||||
!define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps
|
||||
!define MUI_ABORTWARNING # This will warn the user if they exit from the installer.
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME # Welcome to the installer page.
|
||||
# !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer
|
||||
!insertmacro MUI_PAGE_DIRECTORY # In which folder install page.
|
||||
!insertmacro MUI_PAGE_INSTFILES # Installing page.
|
||||
!insertmacro MUI_PAGE_FINISH # Finished installation page.
|
||||
|
||||
!insertmacro MUI_UNPAGE_INSTFILES # Uninstalling page
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English" # Set the Language of the installer
|
||||
|
||||
## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1
|
||||
#!uninstfinalize 'signtool --file "%1"'
|
||||
#!finalize 'signtool --file "%1"'
|
||||
|
||||
Name "${INFO_PRODUCTNAME}"
|
||||
OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file.
|
||||
InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder).
|
||||
ShowInstDetails show # This will always show the installation details.
|
||||
|
||||
Function .onInit
|
||||
!insertmacro wails.checkArchitecture
|
||||
FunctionEnd
|
||||
|
||||
Section
|
||||
!insertmacro wails.setShellContext
|
||||
|
||||
!insertmacro wails.webview2runtime
|
||||
|
||||
SetOutPath $INSTDIR
|
||||
|
||||
!insertmacro wails.files
|
||||
|
||||
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||
CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||
|
||||
!insertmacro wails.writeUninstaller
|
||||
SectionEnd
|
||||
|
||||
Section "uninstall"
|
||||
!insertmacro wails.setShellContext
|
||||
|
||||
RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath
|
||||
|
||||
RMDir /r $INSTDIR
|
||||
|
||||
Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
|
||||
Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
|
||||
|
||||
!insertmacro wails.deleteUninstaller
|
||||
SectionEnd
|
||||
179
v3/internal/commands/build_assets/nsis/wails_tools.nsh.tmpl
Normal file
179
v3/internal/commands/build_assets/nsis/wails_tools.nsh.tmpl
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
# DO NOT EDIT - Generated automatically by `wails build`
|
||||
|
||||
!include "x64.nsh"
|
||||
!include "WinVer.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
|
||||
!ifndef INFO_PROJECTNAME
|
||||
!define INFO_PROJECTNAME "{{.Name}}"
|
||||
!endif
|
||||
!ifndef INFO_COMPANYNAME
|
||||
!define INFO_COMPANYNAME "{{.ProductCompany}}"
|
||||
!endif
|
||||
!ifndef INFO_PRODUCTNAME
|
||||
!define INFO_PRODUCTNAME "{{.ProductName}}"
|
||||
!endif
|
||||
!ifndef INFO_PRODUCTVERSION
|
||||
!define INFO_PRODUCTVERSION "{{.ProductVersion}}"
|
||||
!endif
|
||||
!ifndef INFO_COPYRIGHT
|
||||
!define INFO_COPYRIGHT "{{.ProductCopyright}}"
|
||||
!endif
|
||||
!ifndef PRODUCT_EXECUTABLE
|
||||
!define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
|
||||
!endif
|
||||
!ifndef UNINST_KEY_NAME
|
||||
!define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
||||
!endif
|
||||
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}"
|
||||
|
||||
!ifndef REQUEST_EXECUTION_LEVEL
|
||||
!define REQUEST_EXECUTION_LEVEL "admin"
|
||||
!endif
|
||||
|
||||
RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}"
|
||||
|
||||
!ifdef ARG_WAILS_AMD64_BINARY
|
||||
!define SUPPORTS_AMD64
|
||||
!endif
|
||||
|
||||
!ifdef ARG_WAILS_ARM64_BINARY
|
||||
!define SUPPORTS_ARM64
|
||||
!endif
|
||||
|
||||
!ifdef SUPPORTS_AMD64
|
||||
!ifdef SUPPORTS_ARM64
|
||||
!define ARCH "amd64_arm64"
|
||||
!else
|
||||
!define ARCH "amd64"
|
||||
!endif
|
||||
!else
|
||||
!ifdef SUPPORTS_ARM64
|
||||
!define ARCH "arm64"
|
||||
!else
|
||||
!error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY"
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!macro wails.checkArchitecture
|
||||
!ifndef WAILS_WIN10_REQUIRED
|
||||
!define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later."
|
||||
!endif
|
||||
|
||||
!ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED
|
||||
!define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}"
|
||||
!endif
|
||||
|
||||
${If} ${AtLeastWin10}
|
||||
!ifdef SUPPORTS_AMD64
|
||||
${if} ${IsNativeAMD64}
|
||||
Goto ok
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
!ifdef SUPPORTS_ARM64
|
||||
${if} ${IsNativeARM64}
|
||||
Goto ok
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
IfSilent silentArch notSilentArch
|
||||
silentArch:
|
||||
SetErrorLevel 65
|
||||
Abort
|
||||
notSilentArch:
|
||||
MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}"
|
||||
Quit
|
||||
${else}
|
||||
IfSilent silentWin notSilentWin
|
||||
silentWin:
|
||||
SetErrorLevel 64
|
||||
Abort
|
||||
notSilentWin:
|
||||
MessageBox MB_OK "${WAILS_WIN10_REQUIRED}"
|
||||
Quit
|
||||
${EndIf}
|
||||
|
||||
ok:
|
||||
!macroend
|
||||
|
||||
!macro wails.files
|
||||
!ifdef SUPPORTS_AMD64
|
||||
${if} ${IsNativeAMD64}
|
||||
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}"
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
!ifdef SUPPORTS_ARM64
|
||||
${if} ${IsNativeARM64}
|
||||
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}"
|
||||
${EndIf}
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!macro wails.writeUninstaller
|
||||
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||
|
||||
SetRegView 64
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}"
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}"
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}"
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
|
||||
|
||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||
IntFmt $0 "0x%08X" $0
|
||||
WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0"
|
||||
!macroend
|
||||
|
||||
!macro wails.deleteUninstaller
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
|
||||
SetRegView 64
|
||||
DeleteRegKey HKLM "${UNINST_KEY}"
|
||||
!macroend
|
||||
|
||||
!macro wails.setShellContext
|
||||
${If} ${REQUEST_EXECUTION_LEVEL} == "admin"
|
||||
SetShellVarContext all
|
||||
${else}
|
||||
SetShellVarContext current
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
# Install webview2 by launching the bootstrapper
|
||||
# See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment
|
||||
!macro wails.webview2runtime
|
||||
!ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT
|
||||
!define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime"
|
||||
!endif
|
||||
|
||||
SetRegView 64
|
||||
# If the admin key exists and is not empty then webview2 is already installed
|
||||
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
||||
${If} $0 != ""
|
||||
Goto ok
|
||||
${EndIf}
|
||||
|
||||
${If} ${REQUEST_EXECUTION_LEVEL} == "user"
|
||||
# If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed
|
||||
ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
||||
${If} $0 != ""
|
||||
Goto ok
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
|
||||
SetDetailsPrint both
|
||||
DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}"
|
||||
SetDetailsPrint listonly
|
||||
|
||||
InitPluginsDir
|
||||
CreateDirectory "$pluginsdir\webview2bootstrapper"
|
||||
SetOutPath "$pluginsdir\webview2bootstrapper"
|
||||
File "MicrosoftEdgeWebview2Setup.exe"
|
||||
ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install'
|
||||
|
||||
SetDetailsPrint both
|
||||
ok:
|
||||
!macroend
|
||||
|
|
@ -12,6 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func Init(options *flags.Init) error {
|
||||
|
||||
if options.List {
|
||||
return printTemplates()
|
||||
}
|
||||
|
|
@ -37,9 +38,16 @@ func Init(options *flags.Init) error {
|
|||
|
||||
// Generate build assets
|
||||
buildAssetsOptions := &BuildAssetsOptions{
|
||||
Name: options.ProjectName,
|
||||
Dir: filepath.Join(options.ProjectDir, "build"),
|
||||
Silent: true,
|
||||
Name: options.ProjectName,
|
||||
Dir: filepath.Join(options.ProjectDir, "build"),
|
||||
Silent: true,
|
||||
ProductComments: options.ProductComments,
|
||||
ProductCompany: options.ProductCompany,
|
||||
ProductDescription: options.ProductDescription,
|
||||
ProductName: options.ProductName,
|
||||
ProductVersion: options.ProductVersion,
|
||||
ProductIdentifier: options.ProductIdentifier,
|
||||
ProductCopyright: options.ProductCopyright,
|
||||
}
|
||||
return GenerateBuildAssets(buildAssetsOptions)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,17 @@ package flags
|
|||
type Init struct {
|
||||
Common
|
||||
|
||||
PackageName string `name:"p" description:"Package name" default:"main"`
|
||||
TemplateName string `name:"t" description:"Name of built-in template to use, path to template or template url" default:"vanilla"`
|
||||
ProjectName string `name:"n" description:"Name of project" default:""`
|
||||
ProjectDir string `name:"d" description:"Project directory" default:"."`
|
||||
Quiet bool `name:"q" description:"Suppress output to console"`
|
||||
List bool `name:"l" description:"List templates"`
|
||||
PackageName string `name:"p" description:"Package name" default:"main"`
|
||||
TemplateName string `name:"t" description:"Name of built-in template to use, path to template or template url" default:"vanilla"`
|
||||
ProjectName string `name:"n" description:"Name of project" default:""`
|
||||
ProjectDir string `name:"d" description:"Project directory" default:"."`
|
||||
Quiet bool `name:"q" description:"Suppress output to console"`
|
||||
List bool `name:"l" description:"List templates"`
|
||||
ProductName string `description:"The name of the product" default:"My Product"`
|
||||
ProductDescription string `description:"The description of the product" default:"My Product Description"`
|
||||
ProductVersion string `description:"The version of the product" default:"0.1.0"`
|
||||
ProductCompany string `description:"The company of the product" default:"My Company"`
|
||||
ProductCopyright string `description:"The copyright notice" default:"(c) now, My Company"`
|
||||
ProductComments string `description:"Comments to add to the generated files" default:"This is a comment"`
|
||||
ProductIdentifier string `description:"The product identifier, e.g com.mycompany.myproduct"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ vars:
|
|||
|
||||
tasks:
|
||||
|
||||
## -------------------------- Build -------------------------- ##
|
||||
## -------------------------- Build -------------------------- ##
|
||||
|
||||
build:
|
||||
summary: Builds the application
|
||||
|
|
@ -15,7 +15,7 @@ tasks:
|
|||
- task: build:windows
|
||||
|
||||
|
||||
## --- Windows ---
|
||||
## --- Windows ---
|
||||
|
||||
build:windows:
|
||||
summary: Builds the application for Windows
|
||||
|
|
@ -25,7 +25,7 @@ tasks:
|
|||
- task: build:frontend
|
||||
- go build -gcflags=all="-N -l" -o bin/{{.ProjectName}}.exe
|
||||
|
||||
## --- Darwin ---
|
||||
## --- Darwin ---
|
||||
|
||||
build:darwin:
|
||||
summary: Builds the application
|
||||
|
|
@ -50,7 +50,7 @@ tasks:
|
|||
- task: build:frontend
|
||||
- go build -gcflags=all="-N -l" -o bin/{{.ProjectName}}
|
||||
|
||||
## -------------------------- Package -------------------------- ##
|
||||
## -------------------------- Package -------------------------- ##
|
||||
|
||||
package:
|
||||
summary: Packages a production build of the application into a bundle
|
||||
|
|
@ -67,45 +67,78 @@ tasks:
|
|||
|
||||
## --- Windows AMD64 ---
|
||||
|
||||
package:windows:amd64:
|
||||
build:app:prod:windows:amd64:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
platform: windows/amd64
|
||||
platforms: [ windows/amd64 ]
|
||||
deps:
|
||||
- build:frontend
|
||||
- generate:icons
|
||||
- generate:syso:amd64
|
||||
# --- Uncomment this to speed up builds, but you need to make sure `sources` includes all the files you need to build your binary
|
||||
# sources:
|
||||
# - "*"
|
||||
# generates:
|
||||
# - "bin/{{ "{{.APP_NAME}}" }}.exe"
|
||||
cmds:
|
||||
- task: generate:syso:amd64
|
||||
- GOOS=windows GOARCH=amd64 go build -tags production -ldflags="-w -s -H windowsgui" -o bin/{{ "{{.APP_NAME}}" }}.exe
|
||||
- powershell Remove-item wails.syso
|
||||
|
||||
## --- Windows ARM64 ---
|
||||
|
||||
package:windows:arm64:
|
||||
build:app:prod:windows:arm64:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
platform: windows/arm64
|
||||
platforms: [ windows/arm64 ]
|
||||
deps:
|
||||
- build:frontend
|
||||
- generate:icons
|
||||
- generate:syso:arm64
|
||||
# --- Uncomment this to speed up builds, but you need to make sure `sources` includes all the files you need to build your binary
|
||||
# sources:
|
||||
# - "*"
|
||||
# generates:
|
||||
# - "bin/{{ "{{.APP_NAME}}" }}.exe"
|
||||
cmds:
|
||||
- task: generate:syso:arm64
|
||||
- GOOS=windows GOARCH=arm64 go build -tags production -ldflags="-w -s -H windowsgui" -o bin/{{ "{{.APP_NAME}}" }}.exe
|
||||
- powershell Remove-item wails.syso
|
||||
|
||||
## --- Windows Default ---
|
||||
|
||||
package:windows:
|
||||
build:app:prod:windows:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
platform: windows
|
||||
platforms: [ windows ]
|
||||
deps:
|
||||
- generate:icons
|
||||
- generate:syso
|
||||
# --- Uncomment this to speed up builds, but you need to make sure `sources` includes all the files you need to build your binary
|
||||
# sources:
|
||||
# - "*"
|
||||
# generates:
|
||||
# - "bin/{{ "{{.APP_NAME}}" }}.exe"
|
||||
cmds:
|
||||
- task: generate:syso
|
||||
- go build -tags production -ldflags="-w -s -H windowsgui" -o bin/{{ "{{.APP_NAME}}" }}.exe
|
||||
- powershell Remove-item wails.syso
|
||||
|
||||
## ------ Package Windows ------
|
||||
|
||||
package:windows:arm64:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
cmds:
|
||||
- task: create:nsis:installer:arm64
|
||||
|
||||
package:windows:amd64:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
cmds:
|
||||
- task: create:nsis:installer:amd64
|
||||
|
||||
package:windows:
|
||||
summary: Packages a production build of the application into a `.exe` bundle
|
||||
cmds:
|
||||
- task: create:nsis:installer:{{ "{{ARCH}}" }}
|
||||
|
||||
## --- Darwin ARM64 ---
|
||||
|
||||
package:darwin:arm64:
|
||||
summary: Packages a production build of the application into a `.app` bundle
|
||||
platform: darwin/arm64
|
||||
platforms: [ darwin/arm64 ]
|
||||
deps:
|
||||
- task: build:app:prod:darwin
|
||||
vars:
|
||||
|
|
@ -118,7 +151,7 @@ tasks:
|
|||
|
||||
package:darwin:amd64:
|
||||
summary: Packages a production build of the application into a `.app` bundle
|
||||
platform: darwin/amd64
|
||||
platforms: [ darwin/amd64 ]
|
||||
deps:
|
||||
- task: build:app:prod:darwin
|
||||
vars:
|
||||
|
|
@ -131,6 +164,7 @@ tasks:
|
|||
|
||||
package:darwin:
|
||||
summary: Packages a production build of the application into a `.app` bundle
|
||||
platforms: [ darwin ]
|
||||
deps:
|
||||
- task: build:app:prod:darwin
|
||||
- generate:icons
|
||||
|
|
@ -138,7 +172,7 @@ tasks:
|
|||
- task: create:app:bundle
|
||||
|
||||
|
||||
## -------------------------- Misc -------------------------- ##
|
||||
## -------------------------- Misc -------------------------- ##
|
||||
|
||||
create:app:bundle:
|
||||
summary: Creates an `.app` bundle
|
||||
|
|
@ -183,6 +217,12 @@ tasks:
|
|||
generate:icons:
|
||||
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
||||
dir: build
|
||||
sources:
|
||||
- "appicon.png"
|
||||
generates:
|
||||
- "icons.icns"
|
||||
- "icons.ico"
|
||||
method: timestamp
|
||||
cmds:
|
||||
# Generates both .ico and .icns files
|
||||
- wails3 generate icons -input appicon.png
|
||||
|
|
@ -190,21 +230,39 @@ tasks:
|
|||
generate:syso:arm64:
|
||||
summary: Generates Windows `.syso` file
|
||||
dir: build
|
||||
platform: windows/arm64
|
||||
sources:
|
||||
- "icon.ico"
|
||||
- "wails.exe.manifest"
|
||||
- "info.json"
|
||||
generates:
|
||||
- "wails.syso"
|
||||
method: timestamp
|
||||
cmds:
|
||||
- wails3 generate syso -arch arm64 -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
||||
|
||||
generate:syso:amd64:
|
||||
summary: Generates Windows `.syso` file
|
||||
dir: build
|
||||
platform: windows/amd64
|
||||
sources:
|
||||
- "icon.ico"
|
||||
- "wails.exe.manifest"
|
||||
- "info.json"
|
||||
generates:
|
||||
- "wails.syso"
|
||||
method: timestamp
|
||||
cmds:
|
||||
- wails3 generate syso -arch amd64 -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
||||
|
||||
generate:syso:
|
||||
summary: Generates Windows `.syso` file
|
||||
dir: build
|
||||
platform: windows
|
||||
sources:
|
||||
- "icon.ico"
|
||||
- "wails.exe.manifest"
|
||||
- "info.json"
|
||||
generates:
|
||||
- "wails.syso"
|
||||
method: timestamp
|
||||
cmds:
|
||||
- wails3 generate syso -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
||||
|
||||
|
|
@ -226,9 +284,35 @@ tasks:
|
|||
build:frontend:
|
||||
summary: Build the frontend project
|
||||
dir: frontend
|
||||
sources:
|
||||
- "*"
|
||||
generates:
|
||||
- dist/*
|
||||
deps:
|
||||
- install:frontend:deps
|
||||
cmds:
|
||||
- npm run build
|
||||
|
||||
create:nsis:installer:amd64:
|
||||
summary: Creates an NSIS installer
|
||||
dir: build/nsis
|
||||
sources:
|
||||
- "{{ "{{.ROOT_DIR}}"}}\\bin\\{{ "{{.APP_NAME}}"}}.exe"
|
||||
generates:
|
||||
- "{{ "{{.ROOT_DIR}}"}}\\bin\\{{ "{{.APP_NAME}}"}}-amd64-installer.exe"
|
||||
deps:
|
||||
- task: build:app:prod:windows:amd64
|
||||
cmds:
|
||||
- makensis -DARG_WAILS_AMD64_BINARY="{{ "{{.ROOT_DIR}}"}}\bin\{{ "{{.APP_NAME}}"}}.exe" project.nsi
|
||||
|
||||
create:nsis:installer:arm64:
|
||||
summary: Creates an NSIS installer
|
||||
dir: build/nsis
|
||||
sources:
|
||||
- "{{ "{{.ROOT_DIR}}"}}\\bin\\{{ "{{.APP_NAME}}"}}.exe"
|
||||
generates:
|
||||
- "{{ "{{.ROOT_DIR}}"}}\\bin\\{{ "{{.APP_NAME}}"}}-arm64-installer.exe.exe"
|
||||
deps:
|
||||
- task: build:app:prod:windows:arm64
|
||||
cmds:
|
||||
- makensis -DARG_WAILS_ARM64_BINARY="{{ "{{.ROOT_DIR}}"}}\bin\{{ "{{.APP_NAME}}"}}.exe" project.nsi
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>My Product Name</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>{{.ProjectName}}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.wails.{{.ProjectName}}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>v1.0.0</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>This is a comment</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>v1.0.0</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>icons</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.13.0</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<string>true</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>(c) 2023 My Company Name</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsLocalNetworking</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>My Product Name</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>{{.ProjectName}}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.wails.{{.ProjectName}}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>v1.0.0</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>This is a comment</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>v1.0.0</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>icons</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.13.0</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<string>true</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>(c) 2023 My Company Name</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 130 KiB |
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue