diff --git a/guh-logo.ico b/guh-logo.ico new file mode 100644 index 00000000..372dd491 Binary files /dev/null and b/guh-logo.ico differ diff --git a/mea.pro b/mea.pro index 2ca35f8f..3d816745 100644 --- a/mea.pro +++ b/mea.pro @@ -5,3 +5,18 @@ libnymea-common.subdir = libnymea-common mea.subdir = mea mea.depends = libnymea-common + + +# Building a Windows installer: +# Install Visual Studio, Qt and NSIS on Windows. Make sure NSIS is in your path. +# Use QtCreator to create a release build, make sure to *disable* shadow build. +# After building, run "make wininstaller" +wininstaller.depends = mea +wininstaller.commands += rmdir /S /Q mea\release\out && mkdir mea\release\out && +wininstaller.commands += copy mea\release\mea.exe mea\release\out\ && +wininstaller.commands += windeployqt --qmldir mea\ui mea\release\out && +wininstaller.commands += makensis win-installer.nsi +QMAKE_EXTRA_TARGETS += wininstaller + +target.depends += wininstaller + diff --git a/mea/LICENSE b/mea/LICENSE new file mode 100644 index 00000000..43931c58 --- /dev/null +++ b/mea/LICENSE @@ -0,0 +1 @@ +GPL goes here... diff --git a/mea/mea.pro b/mea/mea.pro index 9fdbc2d3..befd28fb 100644 --- a/mea/mea.pro +++ b/mea/mea.pro @@ -6,7 +6,7 @@ include(../mea.pri) QT += qml quick quickcontrols2 websockets svg INCLUDEPATH += $$top_srcdir/libnymea-common -LIBS += -L$$top_builddir/libnymea-common/ -lnymea-common +LIBS += -L$$top_builddir/libnymea-common/release -L$$top_builddir/libnymea-common/ -lnymea-common HEADERS += engine.h \ nymeainterface.h \ @@ -100,17 +100,6 @@ SOURCES += discovery/avahi/avahiserviceentry.cpp \ RESOURCES += \ resources.qrc -#DISTFILES += \ -# android/AndroidManifest.xml \ -# android/gradle/wrapper/gradle-wrapper.jar \ -# android/gradlew \ -# android/res/values/libs.xml \ -# android/build.gradle \ -# android/gradle/wrapper/gradle-wrapper.properties \ -# android/gradlew.bat - -#ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - contains(ANDROID_TARGET_ARCH,armeabi-v7a) { ANDROID_EXTRA_LIBS = \ $$PWD/../../android-openssl/prebuilt/armeabi-v7a/libcrypto.so \ @@ -124,10 +113,13 @@ DISTFILES += \ android/res/values/libs.xml \ android/build.gradle \ android/gradle/wrapper/gradle-wrapper.properties \ - android/gradlew.bat + android/gradlew.bat \ + LICENSE ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android + +DISTFILES += \ + $$PWD/../win-installer.nsi target.path = /usr/bin INSTALLS += target - diff --git a/win-installer.nsi b/win-installer.nsi new file mode 100644 index 00000000..c0920bcc --- /dev/null +++ b/win-installer.nsi @@ -0,0 +1,122 @@ +# This installs two files, app.exe and logo.ico, creates a start menu shortcut, builds an uninstaller, and +# adds uninstall information to the registry for Add/Remove Programs + +# To get started, put this script into a folder with the two files (app.exe, logo.ico, and license.rtf - +# You'll have to create these yourself) and run makensis on it + +# If you change the names "app.exe", "logo.ico", or "license.rtf" you should do a search and replace - they +# show up in a few places. +# All the other settings can be tweaked by editing the !defines at the top of this script +!define APPNAME "Mea" +!define COMPANYNAME "guh GmbH" +!define DESCRIPTION "A client application for nymea" +# These three must be integers +!define VERSIONMAJOR 0 +!define VERSIONMINOR 0 +!define VERSIONBUILD 1 +# These will be displayed by the "Click here for support information" link in "Add/Remove Programs" +# It is possible to use "mailto:" links in here to open the email client +!define HELPURL "http://..." # "Support Information" link +!define UPDATEURL "http://..." # "Product Updates" link +!define ABOUTURL "http://..." # "Publisher" link +# This is the size (in kB) of all the files copied into "Program Files" +!define INSTALLSIZE 7233 + +RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) + +InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}" + +# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n) +LicenseData "LICENSE" +# This will be in the installer/uninstaller's title bar +Name "${COMPANYNAME} - ${APPNAME}" +Icon "guh-logo.ico" +outFile "mea-installer.exe" + +!include LogicLib.nsh + +# Just three pages - license agreement, install location, and installation +page license +page directory +Page instfiles + +!macro VerifyUserIsAdmin +UserInfo::GetAccountType +pop $0 +${If} $0 != "admin" ;Require admin rights on NT4+ + messageBox mb_iconstop "Administrator rights required!" + setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED + quit +${EndIf} +!macroend + +function .onInit + setShellVarContext all + !insertmacro VerifyUserIsAdmin +functionEnd + +section "install" + # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file) + setOutPath $INSTDIR + + file "guh-logo.ico" + file /r "mea\release\out\*" + + # Uninstaller - See function un.onInit and section "uninstall" for configuration + writeUninstaller "$INSTDIR\uninstall.exe" + + # Start Menu + createDirectory "$SMPROGRAMS\${COMPANYNAME}" + createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\mea.exe" "" "$INSTDIR\guh-logo.ico" + + # Registry information for add/remove programs + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\logo.ico$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "HelpLink" "$\"${HELPURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\"" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR} + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR} + # There is no option for modifying or repairing the install + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1 + # Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" ${INSTALLSIZE} +sectionEnd + +# Uninstaller + +function un.onInit + SetShellVarContext all + + #Verify the uninstaller - last chance to back out + MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next + Abort + next: + !insertmacro VerifyUserIsAdmin +functionEnd + +section "uninstall" + + # Remove Start Menu launcher + delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" + # Try to remove the Start Menu folder - this will only happen if it is empty + rmDir "$SMPROGRAMS\${COMPANYNAME}" + + # Remove files + #delete $INSTDIR/mea.exe + + # Always delete uninstaller as the last action + delete $INSTDIR\uninstall.exe + + # Try to remove the install directory - this will only happen if it is empty + rmDir /r /REBOOTOK $INSTDIR + + # Remove uninstaller information from the registry + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" +sectionEnd