diff --git a/windows-installer/README.md b/windows-installer/README.md new file mode 100644 index 00000000..f7daf11e --- /dev/null +++ b/windows-installer/README.md @@ -0,0 +1,23 @@ +# Dino Windows Installer + +## Requirements + +To create the Dino windows installer you need this: +* nsis (e.g. `apt install nsis` on Debian) +* Dino compiled for windows in input directory +* logo.ico in input directory + * Download https://dino.im/img/logo.svg + * Convert it to ico (e.g. `convert -background transparent -define 'icon:auto-resize=16,24,32,64' logo.svg logo.ico` (requires imagemagick) + +## Create installer + +Simply run `makensis dino.nsi` + +## ToDo + +* Create a [good looking MUI Installer](https://nsis.sourceforge.io/Docs/Modern%20UI/Readme.html) +* Sign the installer + * Requires to [buy a certificate](https://comodosslstore.com/resources/free-code-signing-certificate/) + * Maybe there can be a [free one for open source programs](https://www.codenotary.io/with-codenotary-you-never-have-to-pay-for-code-signing-certificates-again/) - Not yet read thoroughly whether there is a catch. + * https://stackoverflow.com/questions/9527160/sign-nsis-installer-on-linux-box + * https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Signing_an_executable_with_Authenticode diff --git a/windows-installer/dino.nsi b/windows-installer/dino.nsi new file mode 100644 index 00000000..44c5a36c --- /dev/null +++ b/windows-installer/dino.nsi @@ -0,0 +1,52 @@ +Unicode True + +!define MUI_PRODUCT "Dino" +!define MUI_PRODUCT_NAME ${MUI_PRODUCT} +!define PRODUCT_WEBSITE "https://dino.im" +!define MUI_ICON "input/logo.ico" +!define ICON "input/logo.ico" + +# define installer name +OutFile "dino-installer.exe" + +BrandingText "Dino - Communicating happiness" + +# set install directory +InstallDir $PROGRAMFILES64\dino + +# default section start +Section + +# Install binary and DLLs +SetOutPath $INSTDIR\bin +File input/*.dll input/dino.exe + +# Install the libs and shared files +SetOutPath $INSTDIR +File /r /x dino.exe /x plugins /x ./*.dll input/* + +# Install the plugins +SetOutPath $INSTDIR\lib\dino\plugins +File input/plugins/* + +# define uninstaller name +WriteUninstaller $INSTDIR\uninstaller.exe + +# Create a shortcut for startmenu +CreateShortcut "$SMPROGRAMS\dino.lnk" "$INSTDIR\bin\dino.exe" "" "$INSTDIR\logo.ico" + +# default section end +SectionEnd + +# Uninsaller section +Section "Uninstall" + +# Always delete uninstaller first +Delete $INSTDIR\uninstaller.exe + +# now delete installed file +Delete $INSTDIR\* + +# Delete the directory +RMDir /r $INSTDIR +SectionEnd diff --git a/windows-installer/input/logo.ico b/windows-installer/input/logo.ico new file mode 100644 index 00000000..f6a111ee Binary files /dev/null and b/windows-installer/input/logo.ico differ diff --git a/windows-installer/input/logo.svg b/windows-installer/input/logo.svg new file mode 100644 index 00000000..b62f8c32 --- /dev/null +++ b/windows-installer/input/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/windows-installer/sign.sh b/windows-installer/sign.sh new file mode 100644 index 00000000..ad5532af --- /dev/null +++ b/windows-installer/sign.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +signcode \ + -spc TODO.spc \ + -v TODO.pvk \ + -a sha1 -$ commercial \ + -n Dino \ + -i https://dino.im/ \ + -t http://timestamp.verisign.com/scripts/timstamp.dll \ + -tr 10 \ + dino-installer.exe