]> git.lyx.org Git - features.git/blobdiff - development/Win32/packaging/installer/include/gui.nsh
Consider inset strings in simple find/replaceAll (#12049)
[features.git] / development / Win32 / packaging / installer / include / gui.nsh
index 6e7e8aee7b371df8e05621bd42a5dc212e6b47c9..0e744636a501653f27165e5b2111a6dcfa6df9fd 100644 (file)
-/*\r
-\r
-Installer User Interface\r
-\r
-*/\r
-\r
-;--------------------------------\r
-;General\r
-\r
-Name "${APP_NAME} ${APP_VERSION}"\r
-BrandingText " "\r
-\r
-;Default installation folder\r
-InstallDir "${SETUP_DEFAULT_DIRECTORY}"\r
-\r
-;--------------------------------\r
-;Interface settings\r
-\r
-!define MUI_ABORTWARNING\r
-!define MUI_ICON "${SETUP_ICON}"\r
-!define MUI_UNICON "${SETUP_ICON}"\r
-!define MUI_HEADERIMAGE\r
-!define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}"\r
-!define MUI_HEADERIMAGE_RIGHT\r
-!define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"\r
-!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"\r
-!define MUI_CUSTOMFUNCTION_GUIINIT InitInterface\r
-!define MUI_COMPONENTSPAGE_NODESC\r
-\r
-;--------------------------------\r
-;Pages\r
-\r
-;Installer\r
-\r
-!define MUI_WELCOMEPAGE_TITLE_3LINES\r
-!define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME_${SETUPTYPE_NAME})\r
-!insertmacro MUI_PAGE_WELCOME\r
-!insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}"\r
-\r
-Page custom PageUser PageUserValidate\r
-Page custom PageReinstall PageReinstallValidate\r
-Page custom PageExternalLaTeX PageExternalLaTeXValidate\r
-Page custom PageExternalImageMagick PageExternalImageMagickValidate\r
-Page custom PageExternalGhostscript PageExternalGhostscriptValidate\r
-Page custom PageViewer PageViewerValidate\r
-Page custom PageLanguage PageLanguageValidate\r
-\r
-!define MUI_PAGE_HEADER_TEXT $(TEXT_DICT_TITLE)\r
-!define MUI_PAGE_HEADER_SUBTEXT $(TEXT_DICT_SUBTITLE)\r
-!define MUI_COMPONENTSPAGE_TEXT_TOP $(TEXT_DICT_TOP)\r
-!define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(TEXT_DICT_LIST)\r
-!insertmacro MUI_PAGE_COMPONENTS ;For spell checker dictionaries\r
-\r
-!insertmacro MUI_PAGE_DIRECTORY\r
-!insertmacro MUI_PAGE_INSTFILES\r
-\r
-!define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}"\r
-!define MUI_FINISHPAGE_SHOWREADME\r
-!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED\r
-!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut\r
-!define MUI_FINISHPAGE_SHOWREADME_TEXT $(TEXT_FINISH_DESKTOP)\r
-!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)\r
-!define MUI_FINISHPAGE_LINK_LOCATION "http://www.lyx.org/"\r
-!define MUI_PAGE_CUSTOMFUNCTION_PRE CheckDesktopShortcut\r
-!insertmacro MUI_PAGE_FINISH\r
-\r
-;Uninstaller\r
-\r
-!define MUI_WELCOMEPAGE_TITLE_3LINES\r
-!define MUI_WELCOMEPAGE_TEXT $(UNTEXT_WELCOME)\r
-!insertmacro MUI_UNPAGE_WELCOME\r
-!insertmacro MUI_UNPAGE_CONFIRM\r
-!insertmacro MUI_UNPAGE_COMPONENTS\r
-!insertmacro MUI_UNPAGE_INSTFILES\r
-\r
-!insertmacro MUI_UNPAGE_FINISH\r
-\r
-;--------------------------------\r
-;Installer Languages\r
-\r
-!insertmacro IncludeLang "english"\r
-!insertmacro IncludeLang "french"\r
-!insertmacro IncludeLang "german"\r
-!insertmacro IncludeLang "italian"\r
-\r
-;--------------------------------\r
-;Version information\r
-\r
-VIProductVersion "${APP_VERSION_NUMBER}"\r
-VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"\r
-VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"\r
-VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"\r
-VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"\r
-\r
-;--------------------------------\r
-;Macros\r
-\r
-!macro InitDialogExternal COMPONENT CURRENTUSER_POSSIBLE\r
-\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 1" "Text" $(TEXT_EXTERNAL_${COMPONENT}_INFO_${SETUPTYPE_NAME})\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 3" "Text" $(TEXT_EXTERNAL_${COMPONENT}_FOLDER)\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 5" "Text" $(TEXT_EXTERNAL_${COMPONENT}_FOLDER_INFO)\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 6" "Text" $(TEXT_EXTERNAL_${COMPONENT}_NONE)\r
-  \r
-  !if ${CURRENTUSER_POSSIBLE} == ${TRUE}\r
-    !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 2" "Text" "$(TEXT_EXTERNAL_${COMPONENT}_${SETUPTYPE_NAME})"\r
-  !else  \r
-    ${if} $AdminOrPowerUser == ${TRUE}\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 2" "Text" "$(TEXT_EXTERNAL_${COMPONENT}_${SETUPTYPE_NAME})"\r
-    ${else}\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 2" "Text" "$(TEXT_EXTERNAL_${COMPONENT}_${SETUPTYPE_NAME}) $(TEXT_EXTERNAL_NOPRIVILEDGES)"\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 2" "Flags" "DISABLED"\r
-    ${endif}\r
-  !endif\r
-  \r
-!macroend\r
-\r
-!macro InitDialogExternalDir COMPONENT CURRENTUSER_POSSIBLE\r
-\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 4" "State" $Path${COMPONENT}\r
-  \r
-  !if ${CURRENTUSER_POSSIBLE} == ${FALSE}\r
-    ${if} $AdminOrPowerUser == ${TRUE}\r
-  !endif\r
-  \r
-    ${if} $Path${COMPONENT} == ""\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 2" "State" "1"\r
-    ${else}\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 3" "State" "1"\r
-    ${endif}\r
-    \r
-  !if ${CURRENTUSER_POSSIBLE} == ${FALSE}\r
-    ${else}\r
-      !insertmacro MUI_INSTALLOPTIONS_WRITE "external_${COMPONENT}.ini" "Field 3" "State" "1"\r
-    ${endif}\r
-  !endif\r
-  \r
-!macroend\r
-\r
-!macro InitDialogLang VAR LANGNAME LANGISOCODE LANGID\r
-\r
-  StrCpy ${VAR} `${VAR}|${LANGNAME}`\r
-\r
-!macroend\r
-\r
-;--------------------------------\r
-;Functions\r
-\r
-Function InitDialogs\r
-\r
-  Push $R0\r
-\r
-  ;Extract dialogs\r
-  \r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\user.ini" "user.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\reinstall.ini" "reinstall.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\external.ini" "external_latex.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\external.ini" "external_imagemagick.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\external.ini" "external_ghostscript.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\viewer.ini" "viewer.ini"\r
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "dialogs\langselect.ini" "langselect.ini"\r
-  \r
-  ;Write texts\r
-  \r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 1" "Text" $(TEXT_USER_INFO)\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 2" "Text" $(TEXT_USER_ALL)\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 3" "Text" $(TEXT_USER_CURRENT)\r
-  \r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "reinstall.ini" "Field 1" "Text" $(TEXT_REINSTALL_INFO)\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "reinstall.ini" "Field 2" "Text" $(TEXT_REINSTALL_ENABLE)\r
-  \r
-  !insertmacro InitDialogExternal latex ${TRUE}\r
-  !insertmacro InitDialogExternal imagemagick ${FALSE}\r
-  !insertmacro InitDialogExternal ghostscript ${FALSE}\r
-  \r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "viewer.ini" "Field 1" "Text" $(TEXT_VIEWER_INFO_${SETUPTYPE_NAME})\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "viewer.ini" "Field 2" "Text" $(TEXT_VIEWER_${SETUPTYPE_NAME})\r
-  \r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "langselect.ini" "Field 1" "Text" $(TEXT_LANGUAGE_INFO)\r
-  StrCpy $R0 ""\r
-  !insertmacro LanguageList '!insertmacro InitDialogLang $R0'\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "langselect.ini" "Field 2" "ListItems" $R0\r
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "langselect.ini" "Field 2" "State" "English" ;Default language\r
-  \r
-  ;Set state of user dialog\r
-  ${if} $CurrentUserInstall == ${TRUE}\r
-    !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 2" "State" "0"\r
-    !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 3" "State" "1"\r
-  ${else}\r
-    !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 2" "State" "1"\r
-    !insertmacro MUI_INSTALLOPTIONS_WRITE "user.ini" "Field 3" "State" "0"\r
-  ${endif}\r
-  \r
-  Pop $R0\r
-\r
-FunctionEnd\r
-\r
-Function InitInterface\r
-\r
-  ${if} $AdminOrPowerUser != ${TRUE}\r
-    MessageBox MB_OK|MB_ICONEXCLAMATION $(TEXT_NO_PRIVILEDGES)\r
-  ${endif}\r
-\r
-  Banner::show /NOUNLOAD "Preparing wizard"\r
-\r
-  Call InitDialogs\r
-  Call InitLanguage  \r
-  Call InitSizeExternal\r
-  Call InitSizeViewer\r
-  \r
-  Banner::destroy\r
-\r
-FunctionEnd\r
+/*
+
+gui.nsh
+
+Installer user interface settings
+
+*/
+
+#--------------------------------
+# General
+
+Name "${APP_NAME} ${APP_VERSION}"
+BrandingText " "
+
+#--------------------------------
+# Interface settings
+
+!define MUI_ABORTWARNING
+!define MUI_ICON "${SETUP_ICON}"
+!define MUI_UNICON "${SETUP_ICON}"
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}"
+!define MUI_HEADERIMAGE_RIGHT
+!define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
+
+#--------------------------------
+# Pages
+
+# Installer
+
+# Welcome page
+!define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME)
+!insertmacro MUI_PAGE_WELCOME
+
+# Show the license.
+!insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}"
+
+# Decision if it should be installed as admin or not
+!insertmacro MULTIUSER_PAGE_INSTALLMODE
+
+#Page custom PageExternalLaTeX PageExternalLaTeXValidate
+
+# Specify the installation directory.
+!insertmacro MUI_PAGE_DIRECTORY
+
+# Define which components to install.
+!insertmacro MUI_PAGE_COMPONENTS
+
+# Specify where to install program shortcuts.
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${APP_NAME} ${APP_SERIES_NAME}"
+!insertmacro MUI_PAGE_STARTMENU ${APP_NAME} $StartmenuFolder
+
+# Select latex.exe manually
+Page custom LatexFolder LatexFolder_LeaveFunction
+
+# Watch the components being installed.
+!insertmacro MUI_PAGE_INSTFILES
+
+# The option to run LyX from the finish page is currently disabled because
+# it may run with Administrator priviledges, therefore causing a different
+# user directory to be used. This could be fixed by creating a separate
+# process without UAC elevation.
+# !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
+# !define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}"
+
+#!define MUI_FINISHPAGE_SHOWREADME
+#!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+#!define MUI_FINISHPAGE_SHOWREADME_FUNCTION StartLyX
+#!define MUI_FINISHPAGE_SHOWREADME_TEXT $(FinishPageRun)
+!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)
+!define MUI_FINISHPAGE_LINK_LOCATION "https://www.lyx.org/"
+#!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut
+!insertmacro MUI_PAGE_FINISH
+
+# Uninstaller
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+
+!insertmacro MUI_UNPAGE_FINISH
+
+#--------------------------------
+# Installer Languages
+
+!include lang\TranslatedLanguages.nsh
+
+#--------------------------------
+# Version information
+
+VIProductVersion "${APP_VERSION_NUMBER}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${APP_NAME} ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_REVISION} ${APP_SETUPTYPE} installer"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${APP_NAME} Team"
+# Fixme: LyX should register the name "LyX" as trademark
+VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" ""