mirror of
https://github.com/garraflavatra/rolens.git
synced 2024-11-21 14:08:56 +01:00
Generate installer for Windows using NSIS
This commit is contained in:
parent
8a7518532d
commit
aa53d0c400
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
/build/version.txt
|
||||
/build/bin/
|
||||
|
@ -57,5 +57,6 @@ Feel free to contact me if you have questions! [Send an e-mail.](mailto:romein@v
|
||||
## Credits
|
||||
|
||||
* [Wails](https://wails.io/) facilitates the build process for multiple OSes.
|
||||
* The installer for Windows is generated by [NSIS](https://nsis.sourceforge.io/Main_Page).
|
||||
* Icons are from [Feather Icons](https://feathericons.com/) by [Cole Bemis](https://github.com/colebemis).
|
||||
* Vector drawings come from [unDraw](https://undraw.co/).
|
||||
|
@ -1,12 +1,6 @@
|
||||
# Build Directory
|
||||
|
||||
The build directory is used to house all the build files and assets for your application.
|
||||
|
||||
The structure is:
|
||||
|
||||
* bin - Output directory
|
||||
* darwin - macOS specific files
|
||||
* windows - Windows specific files
|
||||
The build directory is used to house all the build files and assets for the application.
|
||||
|
||||
## Mac
|
||||
|
||||
@ -19,9 +13,27 @@ The directory contains the following files:
|
||||
|
||||
## Windows
|
||||
|
||||
The `windows` directory contains the manifest and rc files used when building with `wails build`. These may be customised for your application. To return these files to the default state, simply delete them and build with `wails build`.
|
||||
The `windows` directory contains the manifest and rc files used when building with `wails build`. These may be customised for the application. To return these files to the default state, simply delete them and build with `wails build`.
|
||||
|
||||
- `icon.ico` - The icon used for the application. This is used when building using `wails build`. If you wish to use a different icon, simply replace this file with your own. If it is missing, a new `icon.ico` file will be created using the `appicon.png` file in the build directory.
|
||||
- `icon.ico` - The icon used for the application. This is used when building using `wails build`. If it is missing, a new `icon.ico` file will be created using the `appicon.png` file in the build directory.
|
||||
- `installer/*` - The files used to create the Windows installer. These are used when building using `wails build`.
|
||||
- `info.json` - Application details used for Windows builds. The data here will be used by the Windows installer, as well as the application itself (right click the exe -> properties -> details)
|
||||
- `wails.exe.manifest` - The main application manifest file.
|
||||
|
||||
### NSIS graphics
|
||||
|
||||
When updating the bitmaps for the NSIS installer, make sure you export a 24-bits image without colour space information. Follow [this guide](https://stackoverflow.com/a/26471885):
|
||||
|
||||
> These steps worked for me using GIMP 2.8.10:
|
||||
>
|
||||
> * Create an image using RGB mode (Image > Mode > RGB) using the appropriate size for whatever you are creating (`164x314` for `MUI_WELCOMEFINISHPAGE_BITMAP`, `150x57` for `MUI_HEADERIMAGE_BITMAP`)
|
||||
> * File > Export as ...
|
||||
> * Name your file with a .bmp extension
|
||||
> * Click "Export"
|
||||
> * In the window titled "Export Image as BMP" expand "Compatibility Options" and check the box that says **"Do not write color space information"**
|
||||
> * Also, in the window titled "Export Image as BMP" expand "Advanced Options" and check the radio button under **"24 bits"** next to "R8 G8 B8"
|
||||
> * Click "Export"
|
||||
|
||||
## CI scripts
|
||||
|
||||
Each platform folder inside this directory contains a `ci_generate.*` file, which is used by GitHub Actions to build the application. When you want to compile Rolens on your machine, please refer to the installation instructions.
|
||||
|
@ -1,5 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# This script bundles the binaries generated by GitHub Actions.
|
||||
#
|
||||
@ -32,10 +31,10 @@ version=$(<./build/version.txt)
|
||||
|
||||
mkdir bundle
|
||||
|
||||
# macOS binaries
|
||||
mv artifacts/*/rolens-macos-11-amd64.tar.gz bundle/rolens-$version-macos-amd64.tar.gz
|
||||
mv artifacts/*/rolens-macos-11-arm64.tar.gz bundle/rolens-$version-macos-arm64.tar.gz
|
||||
# macOS apps
|
||||
mv "artifacts/*/rolens-macos-11-amd64.tar.gz" "bundle/rolens-$version-macos-amd64.tar.gz"
|
||||
mv "artifacts/*/rolens-macos-11-arm64.tar.gz" "bundle/rolens-$version-macos-arm64.tar.gz"
|
||||
|
||||
# Windows binaries
|
||||
mv artifacts/*/rolens-windows-2019-amd64.zip bundle/rolens-$version-windows-amd64.zip
|
||||
mv artifacts/*/rolens-windows-2019-arm64.zip bundle/rolens-$version-windows-arm64.zip
|
||||
# Windows installers
|
||||
mv "artifacts/*/rolens-windows-2019-amd64-installer.zip" "bundle/rolens-$version-windows-10+-amd64-installer.zip"
|
||||
mv "artifacts/*/rolens-windows-2019-arm64-installer.zip" "bundle/rolens-$version-windows-10+-arm64-installer.zip"
|
||||
|
@ -1,9 +1,11 @@
|
||||
param([string]$platform)
|
||||
|
||||
mkdir releases
|
||||
wails build -platform windows/amd64
|
||||
Compress-Archive -Path build\bin\* -DestinationPath releases\rolens-$platform-amd64.zip
|
||||
wails build -platform windows/amd64 -nsis
|
||||
Remove-Item build\bin\Rolens.exe
|
||||
Compress-Archive -Path build\bin\* -DestinationPath releases\rolens-$platform-amd64-installer.zip
|
||||
|
||||
Remove-Item -Recurse -Confirm:$false .\build\bin
|
||||
wails build -platform windows/arm64
|
||||
Compress-Archive -Path build\bin\* -DestinationPath releases\rolens-$platform-arm64.zip
|
||||
wails build -platform windows/arm64 -nsis
|
||||
Remove-Item build\bin\Rolens.exe
|
||||
Compress-Archive -Path build\bin\* -DestinationPath releases\rolens-$platform-arm64-installer.zip
|
||||
|
BIN
build/windows/installer/banner_h.bmp
Normal file
BIN
build/windows/installer/banner_h.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
build/windows/installer/banner_v.bmp
Normal file
BIN
build/windows/installer/banner_v.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 151 KiB |
@ -1,12 +1,11 @@
|
||||
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 with the values from ProjectInfo.
|
||||
## If they are defined here, "wails_tools.nsh" will not touch them. This allows to use this project.nsi manually
|
||||
## If the keyword is not defined, "wails_tools.nsh" will populate them with the values from ProjectInfo.
|
||||
## If they are defined here, "wails_tools.nsh" will not touch them. This allows 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:
|
||||
@ -16,28 +15,24 @@ Unicode true
|
||||
## > 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 ProjectInfo file, but they can be overwritten here.
|
||||
####
|
||||
## !define INFO_PROJECTNAME "MyProject" # Default "{{.Name}}"
|
||||
## !define INFO_COMPANYNAME "MyCompany" # Default "{{.Info.CompanyName}}"
|
||||
## !define INFO_PRODUCTNAME "MyProduct" # Default "{{.Info.ProductName}}"
|
||||
## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.Info.ProductVersion}}"
|
||||
## !define INFO_COPYRIGHT "Copyright" # Default "{{.Info.Copyright}}"
|
||||
###
|
||||
## !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
|
||||
####
|
||||
|
||||
## The following information is taken from the ProjectInfo file, but can be overwritten here.
|
||||
## !define INFO_PROJECTNAME "MyProject" # Default "{{.Name}}"
|
||||
## !define INFO_COMPANYNAME "MyCompany" # Default "{{.Info.CompanyName}}"
|
||||
## !define INFO_PRODUCTNAME "MyProduct" # Default "{{.Info.ProductName}}"
|
||||
## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.Info.ProductVersion}}"
|
||||
## !define INFO_COPYRIGHT "Copyright" # Default "{{.Info.Copyright}}"
|
||||
## !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 "wails_tools.nsh"
|
||||
|
||||
# The version information for this two must consist of 4 parts
|
||||
VIProductVersion "${INFO_PRODUCTVERSION}.0"
|
||||
VIFileVersion "${INFO_PRODUCTVERSION}.0"
|
||||
|
||||
# Product information
|
||||
VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}"
|
||||
VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer"
|
||||
VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}"
|
||||
@ -45,23 +40,36 @@ VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}"
|
||||
VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}"
|
||||
VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
|
||||
|
||||
!include "MUI.nsh"
|
||||
|
||||
!include "MUI2.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
|
||||
|
||||
# Bitmap on the left side of the welcome page. Must be 164x314 pixels in size.
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP ".\banner_h.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\banner_v.bmp"
|
||||
!define MUI_WELCOMEPAGE_TITLE "Welcome to the Rolens installer!"
|
||||
|
||||
# Finish page information
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\${INFO_PROJECTNAME}.exe"
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "Start Rolens when finished"
|
||||
!define MUI_FINISHPAGE_TITLE "Thanks for installing!"
|
||||
!define MUI_FINISHPAGE_LINK "Visit Rolens on the Web!"
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://garraflavatra.github.io/rolens/"
|
||||
!define MUI_FINISHPAGE_LINK_COLOR 880000
|
||||
|
||||
!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_PAGE_WELCOME
|
||||
# !insertmacro MUI_PAGE_LICENSE "resources\eula.txt"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_INSTFILES # Uinstalling page
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English" # Set the Language of the installer
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
## 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"'
|
||||
@ -69,7 +77,7 @@ VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
|
||||
|
||||
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).
|
||||
InstallDir "$PROGRAMFILES64\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder).
|
||||
ShowInstDetails show # This will always show the installation details.
|
||||
|
||||
Function .onInit
|
||||
@ -80,7 +88,7 @@ Section
|
||||
!insertmacro wails.webview2runtime
|
||||
|
||||
SetOutPath $INSTDIR
|
||||
|
||||
|
||||
!insertmacro wails.files
|
||||
|
||||
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||
@ -89,7 +97,7 @@ Section
|
||||
!insertmacro wails.writeUninstaller
|
||||
SectionEnd
|
||||
|
||||
Section "uninstall"
|
||||
Section "uninstall"
|
||||
RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath
|
||||
|
||||
RMDir /r $INSTDIR
|
||||
|
@ -8,5 +8,6 @@ Rolens is © [Romein van Buren](mailto:romein@vburen.nl) 2023. The source code a
|
||||
## Credits
|
||||
|
||||
* [Wails](https://wails.io/) facilitates the build process for multiple OSes.
|
||||
* The installer for Windows is generated by [NSIS](https://nsis.sourceforge.io/Main_Page).
|
||||
* Icons are from [Feather Icons](https://feathericons.com/) by [Cole Bemis](https://github.com/colebemis).
|
||||
* Vector drawings come from [unDraw](https://undraw.co/).
|
||||
|
7
docs/development/build-directory.md
Normal file
7
docs/development/build-directory.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Build directory
|
||||
parent: Development
|
||||
order: 50
|
||||
---
|
||||
|
||||
{% filecontent "../build/README.md", 2 %}
|
@ -233,6 +233,12 @@ article {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem 0;
|
||||
padding: 0 0 0 1rem;
|
||||
border-left: 4px solid #ddd;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
padding: 0 0 0 1rem;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user