mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
NSIS/Systray option to launch Hyperion on Windows start [HKCU] (#887)
* NSIS/Systray option to launch Hyperion on Windows start * corrected file path in registry
This commit is contained in:
parent
d4b4158cb7
commit
7550a93e59
@ -40,6 +40,9 @@
|
|||||||
;Require administrator access
|
;Require administrator access
|
||||||
RequestExecutionLevel admin
|
RequestExecutionLevel admin
|
||||||
|
|
||||||
|
;Tnstaller window branding text
|
||||||
|
BrandingText /TRIMLEFT "@CPACK_NSIS_BRANDING_TEXT@"
|
||||||
|
|
||||||
@CPACK_NSIS_DEFINES@
|
@CPACK_NSIS_DEFINES@
|
||||||
|
|
||||||
!include Sections.nsh
|
!include Sections.nsh
|
||||||
@ -523,6 +526,10 @@ Function DownloadFile
|
|||||||
FunctionEnd
|
FunctionEnd
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
|
Function writeStartupRegistry
|
||||||
|
WriteRegStr HKCU "SOFTWARE\MICROSOFT\Windows\CurrentVersion\Run" "@CPACK_NSIS_PACKAGE_NAME@" "$INSTDIR\bin\hyperiond.exe"
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
; Define some macro setting for the gui
|
; Define some macro setting for the gui
|
||||||
@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
|
@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
|
||||||
@ -553,6 +560,10 @@ FunctionEnd
|
|||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
@CPACK_NSIS_INSTALLER_FINISH_TITLE_CODE@
|
@CPACK_NSIS_INSTALLER_FINISH_TITLE_CODE@
|
||||||
@CPACK_NSIS_INSTALLER_FINISH_TITLE_3LINES_CODE@
|
@CPACK_NSIS_INSTALLER_FINISH_TITLE_3LINES_CODE@
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\bin\hyperiond.exe"
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(FINISH_READMETXT)"
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION writeStartupRegistry
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
||||||
!insertmacro MUI_PAGE_FINISH
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
|
||||||
!insertmacro MUI_UNPAGE_CONFIRM
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
@ -613,6 +624,42 @@ FunctionEnd
|
|||||||
!insertmacro MUI_LANGUAGE "Ukrainian"
|
!insertmacro MUI_LANGUAGE "Ukrainian"
|
||||||
!insertmacro MUI_LANGUAGE "Welsh"
|
!insertmacro MUI_LANGUAGE "Welsh"
|
||||||
|
|
||||||
|
LangString FINISH_READMETXT ${LANG_ENGLISH} "Load @CPACK_NSIS_PACKAGE_NAME@ at Windows startup"
|
||||||
|
LangString FINISH_READMETXT ${LANG_ALBANIAN} "Thirr @CPACK_NSIS_PACKAGE_NAME@ gjatë startimit të Windows-it"
|
||||||
|
LangString FINISH_READMETXT ${LANG_ARABIC} "مع بدء الويندوز @CPACK_NSIS_PACKAGE_NAME@ تشغيل"
|
||||||
|
LangString FINISH_READMETXT ${LANG_BOSNIAN} "Pokreni @CPACK_NSIS_PACKAGE_NAME@ pri startovanju Windowsa"
|
||||||
|
LangString FINISH_READMETXT ${LANG_BULGARIAN} "Стартирайте @CPACK_NSIS_PACKAGE_NAME@ при стартиране на Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_CROATIAN} "Uèitaj @CPACK_NSIS_PACKAGE_NAME@ prilikom podizanja Windowsa"
|
||||||
|
LangString FINISH_READMETXT ${LANG_CZECH} "Nahrát @CPACK_NSIS_PACKAGE_NAME@ pøi spuštìní windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_DANISH} "Indlæs @CPACK_NSIS_PACKAGE_NAME@ ved Windows opstart"
|
||||||
|
LangString FINISH_READMETXT ${LANG_DUTCH} "Laad @CPACK_NSIS_PACKAGE_NAME@ bij opstarten van Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_FINNISH} "Lataa @CPACK_NSIS_PACKAGE_NAME@ Windowsin käynnistyessä"
|
||||||
|
LangString FINISH_READMETXT ${LANG_FRENCH} "Charger @CPACK_NSIS_PACKAGE_NAME@ lors de l'initialisation de Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_GERMAN} "Starte @CPACK_NSIS_PACKAGE_NAME@ beim Windows start"
|
||||||
|
LangString FINISH_READMETXT ${LANG_HUNGARIAN} "Indítsa el a @CPACK_NSIS_PACKAGE_NAME@ alkalmazást, amikor a Windows elindul"
|
||||||
|
LangString FINISH_READMETXT ${LANG_INDONESIAN} "Panggil @CPACK_NSIS_PACKAGE_NAME@ saat Windows dimulai"
|
||||||
|
LangString FINISH_READMETXT ${LANG_ITALIAN} "Esegui @CPACK_NSIS_PACKAGE_NAME@ all'avvio del sistema"
|
||||||
|
LangString FINISH_READMETXT ${LANG_JAPANESE} "Windows起動時に@CPACK_NSIS_PACKAGE_NAME@を起動する"
|
||||||
|
LangString FINISH_READMETXT ${LANG_KOREAN} "Windows 시작시 @CPACK_NSIS_PACKAGE_NAME@ 시작"
|
||||||
|
LangString FINISH_READMETXT ${LANG_LATVIAN} "Startējiet @CPACK_NSIS_PACKAGE_NAME@, kad Windows tiek startēts"
|
||||||
|
LangString FINISH_READMETXT ${LANG_LITHUANIAN} "Pradėkite @CPACK_NSIS_PACKAGE_NAME@, kai Windows paleidžiama"
|
||||||
|
LangString FINISH_READMETXT ${LANG_MACEDONIAN} "Започнете @CPACK_NSIS_PACKAGE_NAME@ кога ќе започне Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_NORWEGIAN} "Start @CPACK_NSIS_PACKAGE_NAME@ ved Windows oppstart"
|
||||||
|
LangString FINISH_READMETXT ${LANG_POLISH} "Uruchamiaæ @CPACK_NSIS_PACKAGE_NAME@ przy logowaniu Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_PORTUGUESE} "Carregar o @CPACK_NSIS_PACKAGE_NAME@ na inicialização do Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_ROMANIAN} "Incarca @CPACK_NSIS_PACKAGE_NAME@ la pornirea Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_RUSSIAN} "Запускать @CPACK_NSIS_PACKAGE_NAME@ при старте Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SERBIAN} "Покрените @CPACK_NSIS_PACKAGE_NAME@ при покретању Виндовс"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SIMPCHINESE} "Windows 系统启动时运行 @CPACK_NSIS_PACKAGE_NAME@"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SLOVAK} "Naèíta @CPACK_NSIS_PACKAGE_NAME@ pri spustení Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SLOVENIAN} "Zažene @CPACK_NSIS_PACKAGE_NAME@ kot del zagona Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SPANISH} "Inicia @CPACK_NSIS_PACKAGE_NAME@ en el arranque de Windows"
|
||||||
|
LangString FINISH_READMETXT ${LANG_SWEDISH} "Startar @CPACK_NSIS_PACKAGE_NAME@ som en del av Windows boot"
|
||||||
|
LangString FINISH_READMETXT ${LANG_TRADCHINESE} "在 Windows 啟動時載入 @CPACK_NSIS_PACKAGE_NAME@"
|
||||||
|
LangString FINISH_READMETXT ${LANG_TURKISH} "@CPACK_NSIS_PACKAGE_NAME@ 'i Windows baþlatýlýrken baþlatýr"
|
||||||
|
LangString FINISH_READMETXT ${LANG_UKRAINIAN} "Запустіть @CPACK_NSIS_PACKAGE_NAME@ у запуску Windows"
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
;Reserve Files
|
;Reserve Files
|
||||||
|
|
||||||
@ -861,6 +908,7 @@ Section "Uninstall"
|
|||||||
|
|
||||||
; Remove the registry entries.
|
; Remove the registry entries.
|
||||||
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||||
|
DeleteRegValue HKCU "SOFTWARE\MICROSOFT\Windows\CurrentVersion\Run" "@CPACK_NSIS_PACKAGE_NAME@"
|
||||||
|
|
||||||
; Removes all optional components
|
; Removes all optional components
|
||||||
!insertmacro SectionList "RemoveSection_CPack"
|
!insertmacro SectionList "RemoveSection_CPack"
|
||||||
|
@ -102,6 +102,7 @@ SET ( CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\hyperiond.exe")
|
|||||||
SET ( CPACK_NSIS_HELP_LINK "https://www.hyperion-project.org")
|
SET ( CPACK_NSIS_HELP_LINK "https://www.hyperion-project.org")
|
||||||
SET ( CPACK_NSIS_URL_INFO_ABOUT "https://www.hyperion-project.org")
|
SET ( CPACK_NSIS_URL_INFO_ABOUT "https://www.hyperion-project.org")
|
||||||
SET ( CPACK_NSIS_MUI_FINISHPAGE_RUN "hyperiond.exe")
|
SET ( CPACK_NSIS_MUI_FINISHPAGE_RUN "hyperiond.exe")
|
||||||
|
SET ( CPACK_NSIS_BRANDING_TEXT "Hyperion-${HYPERION_VERSION}")
|
||||||
# additional hyperiond startmenu link, won't be created if the user disables startmenu links
|
# additional hyperiond startmenu link, won't be created if the user disables startmenu links
|
||||||
SET ( CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Hyperion (Console).lnk' '$INSTDIR\\\\bin\\\\hyperiond.exe' '-d -c'")
|
SET ( CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Hyperion (Console).lnk' '$INSTDIR\\\\bin\\\\hyperiond.exe' '-d -c'")
|
||||||
SET ( CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\Hyperion (Console).lnk'")
|
SET ( CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\Hyperion (Console).lnk'")
|
||||||
|
@ -3,12 +3,15 @@
|
|||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// QT includes
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
#include <utils/ColorRgb.h>
|
#include <utils/ColorRgb.h>
|
||||||
#include <effectengine/EffectDefinition.h>
|
#include <effectengine/EffectDefinition.h>
|
||||||
@ -43,6 +46,11 @@ void SysTray::iconActivated(QSystemTrayIcon::ActivationReason reason)
|
|||||||
{
|
{
|
||||||
switch (reason)
|
switch (reason)
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
case QSystemTrayIcon::Context:
|
||||||
|
getCurrentAutorunState();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case QSystemTrayIcon::Trigger:
|
case QSystemTrayIcon::Trigger:
|
||||||
break;
|
break;
|
||||||
case QSystemTrayIcon::DoubleClick:
|
case QSystemTrayIcon::DoubleClick:
|
||||||
@ -89,6 +97,14 @@ void SysTray::createTrayIcon()
|
|||||||
_trayIconEfxMenu->addAction(efxAction);
|
_trayIconEfxMenu->addAction(efxAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
autorunAction = new QAction(tr("&Disable autostart"), this);
|
||||||
|
connect(autorunAction, SIGNAL(triggered()), this, SLOT(setAutorunState()));
|
||||||
|
|
||||||
|
_trayIconMenu->addAction(autorunAction);
|
||||||
|
_trayIconMenu->addSeparator();
|
||||||
|
#endif
|
||||||
|
|
||||||
_trayIconMenu->addAction(settingsAction);
|
_trayIconMenu->addAction(settingsAction);
|
||||||
_trayIconMenu->addSeparator();
|
_trayIconMenu->addSeparator();
|
||||||
_trayIconMenu->addAction(colorAction);
|
_trayIconMenu->addAction(colorAction);
|
||||||
@ -101,6 +117,32 @@ void SysTray::createTrayIcon()
|
|||||||
_trayIcon->setContextMenu(_trayIconMenu);
|
_trayIcon->setContextMenu(_trayIconMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
bool SysTray::getCurrentAutorunState()
|
||||||
|
{
|
||||||
|
QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
|
||||||
|
if (reg.value("Hyperion", 0).toString() == qApp->applicationFilePath().replace('/', '\\'))
|
||||||
|
{
|
||||||
|
autorunAction->setText(tr("&Disable autostart"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
autorunAction->setText(tr("&Enable autostart"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void SysTray::setAutorunState()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
bool currentState = getCurrentAutorunState();
|
||||||
|
QSettings reg("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
|
||||||
|
(currentState)
|
||||||
|
? reg.remove("Hyperion")
|
||||||
|
: reg.setValue("Hyperion", qApp->applicationFilePath().replace('/', '\\'));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void SysTray::setColor(const QColor & color)
|
void SysTray::setColor(const QColor & color)
|
||||||
{
|
{
|
||||||
std::vector<ColorRgb> rgbColor{ ColorRgb{ (uint8_t)color.red(), (uint8_t)color.green(), (uint8_t)color.blue() } };
|
std::vector<ColorRgb> rgbColor{ ColorRgb{ (uint8_t)color.red(), (uint8_t)color.green(), (uint8_t)color.blue() } };
|
||||||
|
@ -27,6 +27,7 @@ public slots:
|
|||||||
void settings();
|
void settings();
|
||||||
void setEffect();
|
void setEffect();
|
||||||
void clearEfxColor();
|
void clearEfxColor();
|
||||||
|
void setAutorunState();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void iconActivated(QSystemTrayIcon::ActivationReason reason);
|
void iconActivated(QSystemTrayIcon::ActivationReason reason);
|
||||||
@ -37,19 +38,30 @@ private slots:
|
|||||||
void webserverPortChanged(const quint16& port) { _webPort = port; };
|
void webserverPortChanged(const quint16& port) { _webPort = port; };
|
||||||
|
|
||||||
///
|
///
|
||||||
/// @brief is called whenever a hyperion isntance state changes
|
/// @brief is called whenever a hyperion instance state changes
|
||||||
///
|
///
|
||||||
void handleInstanceStateChange(const InstanceState& state, const quint8& instance, const QString& name);
|
void handleInstanceStateChange(const InstanceState& state, const quint8& instance, const QString& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void createTrayIcon();
|
void createTrayIcon();
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
///
|
||||||
|
/// @brief Checks whether Hyperion should start at Windows system start.
|
||||||
|
/// @return True on success, otherwise false
|
||||||
|
///
|
||||||
|
bool getCurrentAutorunState();
|
||||||
|
#endif
|
||||||
|
|
||||||
QAction *quitAction;
|
QAction *quitAction;
|
||||||
QAction *startAction;
|
QAction *startAction;
|
||||||
QAction *stopAction;
|
QAction *stopAction;
|
||||||
QAction *colorAction;
|
QAction *colorAction;
|
||||||
QAction *settingsAction;
|
QAction *settingsAction;
|
||||||
QAction *clearAction;
|
QAction *clearAction;
|
||||||
|
#ifdef _WIN32
|
||||||
|
QAction *autorunAction;
|
||||||
|
#endif
|
||||||
|
|
||||||
QSystemTrayIcon *_trayIcon;
|
QSystemTrayIcon *_trayIcon;
|
||||||
QMenu *_trayIconMenu;
|
QMenu *_trayIconMenu;
|
||||||
|
Loading…
Reference in New Issue
Block a user