From 9a4e143f3d70c2926644feec98741a69639cf2d2 Mon Sep 17 00:00:00 2001 From: nowrep Date: Thu, 10 Mar 2011 15:41:19 +0100 Subject: [PATCH] Updated Windows installation script --- windows/installer.nsi | 83 ++++++++++++++---- windows/languages.nsh | 199 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 264 insertions(+), 18 deletions(-) create mode 100644 windows/languages.nsh diff --git a/windows/installer.nsi b/windows/installer.nsi index 46799b61a..e30b35085 100644 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -1,5 +1,5 @@ +RequestExecutionLevel user !include "FileAssociation.nsh" - SetCompressor /SOLID /FINAL lzma !define PRODUCT_NAME "QupZilla" @@ -16,6 +16,8 @@ SetCompressor /SOLID /FINAL lzma !define MUI_UNWELCOMEFINISHPAGE_BITMAP "wininstall\welcome.bmp" !insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE COPYRIGHT.txt +!insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES @@ -40,6 +42,8 @@ SetCompressor /SOLID /FINAL lzma !insertmacro MUI_LANGUAGE "Tradchinese" !insertmacro MUI_LANGUAGE "Simpchinese" +!insertmacro MUI_RESERVEFILE_LANGDLL + Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION} Installer.exe" InstallDir "$PROGRAMFILES\${PRODUCT_NAME}\" @@ -47,17 +51,17 @@ InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show -Section "Main Components" +!include "wininstall\languages.nsh" + +Section !$(TITLE_SecMain) SecMain + SectionIn RO KillProcDLL::KillProc "qupzilla.exe" Sleep 100 SetOverwrite on SetOutPath "$INSTDIR" + File "COPYRIGHT.txt" File "qupzilla.exe" - File "AUTHORS" - File "COPYRIGHT" - File "GPLv3" - File "README" File "libeay32.dll" File "ssleay32.dll" File "libssl32.dll" @@ -85,34 +89,75 @@ Section "Main Components" File "imageformats\qtiff4.dll" File "imageformats\qmng4.dll" + SetOutPath "$INSTDIR\sqldrivers" + File "sqldrivers\qsqlite4.dll" + File "sqldrivers\qsqlodbc4.dll" + +SectionEnd + +SectionGroup $(TITLE_SecTranslations) SecTranslations + Section $(TITLE_SecEnglish) SecEnglish + SectionIn RO + SectionEnd + + Section $(TITLE_SecCzech) SecCzech SetOutPath "$INSTDIR\locale" File "locale\cs_CZ.qm" File "locale\qt_cs.qm" + SectionEnd + + Section $(TITLE_SecSlovak) SecSlovak + SetOutPath "$INSTDIR\locale" File "locale\sk_SK.qm" File "locale\qt_sk.qm" + SectionEnd + +SectionGroupEnd +SectionGroup $(TITLE_SecPlugins) SecPlugins + Section $(TITLE_SecExamplePlugin) SecExamplePlugin SetOutPath "$INSTDIR\plugins" File "plugins\ExamplePlugin.dll" + SectionEnd +SectionGroupEnd - SetOutPath "$INSTDIR\sqldrivers" - File "sqldrivers\qsqlite4.dll" - File "sqldrivers\qsqlodbc4.dll" +Section "-Register Extension" + SetOutPath "$INSTDIR" + ${registerExtension} "$INSTDIR\qupzilla.exe" ".htm" "HTM File" + ${registerExtension} "$INSTDIR\qupzilla.exe" ".html" "HTML File" SectionEnd -Section Icons +Section "-StartMenu" + SetOutPath "$INSTDIR" + SetShellVarContext all + CreateDirectory "$SMPROGRAMS\QupZilla" + CreateShortCut "$SMPROGRAMS\QupZilla\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + CreateShortCut "$SMPROGRAMS\QupZilla\QupZilla.lnk" "$INSTDIR\qupzilla.exe" + CreateShortCut "$SMPROGRAMS\QupZilla\License.lnk" "$INSTDIR\COPYRIGHT.txt" +SectionEnd + +Section $(TITLE_SecDesktop) SecDesktop SetOutPath "$INSTDIR" - CreateShortCut "$SMPROGRAMS\QupZilla.lnk" "$INSTDIR\qupzilla.exe" "" CreateShortCut "$DESKTOP\QupZilla.lnk" "$INSTDIR\qupzilla.exe" "" - ${registerExtension} "$INSTDIR\qupzilla.exe" ".htm" "HTM_FILE" - ${registerExtension} "$INSTDIR\qupzilla.exe" ".html" "HTML_FILE" SectionEnd -Section Uninstaller +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecMain} $(DESC_SecMain) + !insertmacro MUI_DESCRIPTION_TEXT ${SecTranslations} $(DESC_SecTranslations) + !insertmacro MUI_DESCRIPTION_TEXT ${SecEnglish} $(DESC_SecEnglish) + !insertmacro MUI_DESCRIPTION_TEXT ${SecCzech} $(DESC_SecCzech) + !insertmacro MUI_DESCRIPTION_TEXT ${SecSlovak} $(DESC_SecSlovak) + !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) + !insertmacro MUI_DESCRIPTION_TEXT ${SecExamplePlugin} $(DESC_SecExamplePlugin) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(DESC_SecDesktop) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +Section "-Uninstaller" WriteUninstaller "$INSTDIR\uninstall.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\qupzilla.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\qupzilla.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" SectionEnd @@ -120,13 +165,15 @@ SectionEnd Section Uninstall KillProcDLL::KillProc "qupzilla.exe" Sleep 100 - Delete "$SMPROGRAMS\QupZilla.lnk" + + SetShellVarContext all Delete "$DESKTOP\QupZilla.lnk" RMDir /r "$INSTDIR" + RMDir /r "$SMPROGRAMS\QupZilla" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" - ${unregisterExtension} ".htm" "HTM_FILE" - ${unregisterExtension} ".html" "HTML_FILE" + ${unregisterExtension} ".htm" "HTM File" + ${unregisterExtension} ".html" "HTML File" SectionEnd BrandingText "${PRODUCT_NAME} ${PRODUCT_VERSION} Installer" diff --git a/windows/languages.nsh b/windows/languages.nsh new file mode 100644 index 000000000..4e37382de --- /dev/null +++ b/windows/languages.nsh @@ -0,0 +1,199 @@ +LangString TITLE_SecMain ${LANG_ENGLISH} "Main Components" +LangString TITLE_SecMain ${LANG_CZECH} "Hlavní komponenty" +LangString TITLE_SecMain ${LANG_SLOVAK} "Hlavné komponenty" +LangString TITLE_SecMain ${LANG_DUTCH} "Main Components" +LangString TITLE_SecMain ${LANG_FRENCH} "Main Components" +LangString TITLE_SecMain ${LANG_GERMAN} "Main Components" +LangString TITLE_SecMain ${LANG_KOREAN} "Main Components" +LangString TITLE_SecMain ${LANG_RUSSIAN} "Main Components" +LangString TITLE_SecMain ${LANG_SPANISH} "Main Components" +LangString TITLE_SecMain ${LANG_SWEDISH} "Main Components" +LangString TITLE_SecMain ${LANG_TRADCHINESE} "Main Components" +LangString TITLE_SecMain ${LANG_SIMPCHINESE} "Main Components" +LangString DESC_SecMain ${LANG_ENGLISH} "Main components of application." +LangString DESC_SecMain ${LANG_CZECH} "Hlavní komponenty aplikace." +LangString DESC_SecMain ${LANG_SLOVAK} "Hlavné komponenty aplikace." +LangString DESC_SecMain ${LANG_DUTCH} "Main components of application." +LangString DESC_SecMain ${LANG_FRENCH} "Main components of application." +LangString DESC_SecMain ${LANG_GERMAN} "Main components of application." +LangString DESC_SecMain ${LANG_KOREAN} "Main components of application." +LangString DESC_SecMain ${LANG_RUSSIAN} "Main components of application." +LangString DESC_SecMain ${LANG_SPANISH} "Main components of application." +LangString DESC_SecMain ${LANG_SWEDISH} "Main components of application." +LangString DESC_SecMain ${LANG_TRADCHINESE} "Main components of application." +LangString DESC_SecMain ${LANG_SIMPCHINESE} "Main components of application." + +LangString TITLE_SecTranslations ${LANG_ENGLISH} "Translations" +LangString TITLE_SecTranslations ${LANG_CZECH} "Překlady" +LangString TITLE_SecTranslations ${LANG_SLOVAK} "Preklady" +LangString TITLE_SecTranslations ${LANG_DUTCH} "Translations" +LangString TITLE_SecTranslations ${LANG_FRENCH} "Translations" +LangString TITLE_SecTranslations ${LANG_GERMAN} "Translations" +LangString TITLE_SecTranslations ${LANG_KOREAN} "Translations" +LangString TITLE_SecTranslations ${LANG_RUSSIAN} "Translations" +LangString TITLE_SecTranslations ${LANG_SPANISH} "Translations" +LangString TITLE_SecTranslations ${LANG_SWEDISH} "Translations" +LangString TITLE_SecTranslations ${LANG_TRADCHINESE} "Translations" +LangString TITLE_SecTranslations ${LANG_SIMPCHINESE} "Translations" +LangString DESC_SecTranslations ${LANG_ENGLISH} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_CZECH} "Ostatní překlady dostupné k instalaci. Angličtina je defaultní." +LangString DESC_SecTranslations ${LANG_SLOVAK} "Ostatné překlady dostupné k inštalácii. Angličtina je defaultná" +LangString DESC_SecTranslations ${LANG_DUTCH} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_FRENCH} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_GERMAN} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_KOREAN} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_RUSSIAN} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_SPANISH} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_SWEDISH} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_TRADCHINESE} "Other translations available to install. Default is English." +LangString DESC_SecTranslations ${LANG_SIMPCHINESE} "Other translations available to install. Default is English." + +LangString TITLE_SecEnglish ${LANG_ENGLISH} "English" +LangString TITLE_SecEnglish ${LANG_CZECH} "Angličtina" +LangString TITLE_SecEnglish ${LANG_SLOVAK} "Angličtina" +LangString TITLE_SecEnglish ${LANG_DUTCH} "English" +LangString TITLE_SecEnglish ${LANG_FRENCH} "English" +LangString TITLE_SecEnglish ${LANG_GERMAN} "English" +LangString TITLE_SecEnglish ${LANG_KOREAN} "English" +LangString TITLE_SecEnglish ${LANG_RUSSIAN} "English" +LangString TITLE_SecEnglish ${LANG_SPANISH} "English" +LangString TITLE_SecEnglish ${LANG_SWEDISH} "English" +LangString TITLE_SecEnglish ${LANG_TRADCHINESE} "English" +LangString TITLE_SecEnglish ${LANG_SIMPCHINESE} "English" +LangString DESC_SecEnglish ${LANG_ENGLISH} "English translation" +LangString DESC_SecEnglish ${LANG_CZECH} "Anglický překlad" +LangString DESC_SecEnglish ${LANG_SLOVAK} "Anglický překlad" +LangString DESC_SecEnglish ${LANG_DUTCH} "English translation" +LangString DESC_SecEnglish ${LANG_FRENCH} "English translation" +LangString DESC_SecEnglish ${LANG_GERMAN} "English translation" +LangString DESC_SecEnglish ${LANG_KOREAN} "English translation" +LangString DESC_SecEnglish ${LANG_RUSSIAN} "English translation" +LangString DESC_SecEnglish ${LANG_SPANISH} "English translation" +LangString DESC_SecEnglish ${LANG_SWEDISH} "English translation" +LangString DESC_SecEnglish ${LANG_TRADCHINESE} "English translation" +LangString DESC_SecEnglish ${LANG_SIMPCHINESE} "English translation" + +LangString TITLE_SecCzech ${LANG_ENGLISH} "Czech" +LangString TITLE_SecCzech ${LANG_CZECH} "Čeština" +LangString TITLE_SecCzech ${LANG_SLOVAK} "Čeština" +LangString TITLE_SecCzech ${LANG_DUTCH} "Czech" +LangString TITLE_SecCzech ${LANG_FRENCH} "Czech" +LangString TITLE_SecCzech ${LANG_GERMAN} "Czech" +LangString TITLE_SecCzech ${LANG_KOREAN} "Czech" +LangString TITLE_SecCzech ${LANG_RUSSIAN} "Czech" +LangString TITLE_SecCzech ${LANG_SPANISH} "Czech" +LangString TITLE_SecCzech ${LANG_SWEDISH} "Czech" +LangString TITLE_SecCzech ${LANG_TRADCHINESE} "Czech" +LangString TITLE_SecCzech ${LANG_SIMPCHINESE} "Czech" +LangString DESC_SecCzech ${LANG_ENGLISH} "Czech translation" +LangString DESC_SecCzech ${LANG_CZECH} "Český překlad" +LangString DESC_SecCzech ${LANG_SLOVAK} "Český preklad" +LangString DESC_SecCzech ${LANG_DUTCH} "Czech translation" +LangString DESC_SecCzech ${LANG_FRENCH} "Czech translation" +LangString DESC_SecCzech ${LANG_GERMAN} "Czech translation" +LangString DESC_SecCzech ${LANG_KOREAN} "Czech translation" +LangString DESC_SecCzech ${LANG_RUSSIAN} "Czech translation" +LangString DESC_SecCzech ${LANG_SPANISH} "Czech translation" +LangString DESC_SecCzech ${LANG_SWEDISH} "Czech translation" +LangString DESC_SecCzech ${LANG_TRADCHINESE} "Czech translation" +LangString DESC_SecCzech ${LANG_SIMPCHINESE} "Czech translation" + +LangString TITLE_SecSlovak ${LANG_ENGLISH} "Slovak" +LangString TITLE_SecSlovak ${LANG_CZECH} "Slovenština" +LangString TITLE_SecSlovak ${LANG_SLOVAK} "Slovenština" +LangString TITLE_SecSlovak ${LANG_DUTCH} "Slovak" +LangString TITLE_SecSlovak ${LANG_FRENCH} "Slovak" +LangString TITLE_SecSlovak ${LANG_GERMAN} "Slovak" +LangString TITLE_SecSlovak ${LANG_KOREAN} "Slovak" +LangString TITLE_SecSlovak ${LANG_RUSSIAN} "Slovak" +LangString TITLE_SecSlovak ${LANG_SPANISH} "Slovak" +LangString TITLE_SecSlovak ${LANG_SWEDISH} "Slovak" +LangString TITLE_SecSlovak ${LANG_TRADCHINESE} "Slovak" +LangString TITLE_SecSlovak ${LANG_SIMPCHINESE} "Slovak" +LangString DESC_SecSlovak ${LANG_ENGLISH} "Slovak translation" +LangString DESC_SecSlovak ${LANG_CZECH} "Slovenský překlad" +LangString DESC_SecSlovak ${LANG_SLOVAK} "Slovenský preklad" +LangString DESC_SecSlovak ${LANG_DUTCH} "Slovak translation" +LangString DESC_SecSlovak ${LANG_FRENCH} "Slovak translation" +LangString DESC_SecSlovak ${LANG_GERMAN} "Slovak translation" +LangString DESC_SecSlovak ${LANG_KOREAN} "Slovak translation" +LangString DESC_SecSlovak ${LANG_RUSSIAN} "Slovak translation" +LangString DESC_SecSlovak ${LANG_SPANISH} "Slovak translation" +LangString DESC_SecSlovak ${LANG_SWEDISH} "Slovak translation" +LangString DESC_SecSlovak ${LANG_TRADCHINESE} "Slovak translation" +LangString DESC_SecSlovak ${LANG_SIMPCHINESE} "Slovak translation" + +LangString TITLE_SecPlugins ${LANG_ENGLISH} "Plugins" +LangString TITLE_SecPlugins ${LANG_CZECH} "Doplňky" +LangString TITLE_SecPlugins ${LANG_SLOVAK} "Doplnky" +LangString TITLE_SecPlugins ${LANG_DUTCH} "Plugins" +LangString TITLE_SecPlugins ${LANG_FRENCH} "Plugins" +LangString TITLE_SecPlugins ${LANG_GERMAN} "Plugins" +LangString TITLE_SecPlugins ${LANG_KOREAN} "Plugins" +LangString TITLE_SecPlugins ${LANG_RUSSIAN} "Plugins" +LangString TITLE_SecPlugins ${LANG_SPANISH} "Plugins" +LangString TITLE_SecPlugins ${LANG_SWEDISH} "Plugins" +LangString TITLE_SecPlugins ${LANG_TRADCHINESE} "Plugins" +LangString TITLE_SecPlugins ${LANG_SIMPCHINESE} "Plugins" +LangString DESC_SecPlugins ${LANG_ENGLISH} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_CZECH} "Ostatní doplňky dostupné k instalaci." +LangString DESC_SecPlugins ${LANG_SLOVAK} "Ostatné doplnky dustupne k inštalácii" +LangString DESC_SecPlugins ${LANG_DUTCH} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_FRENCH} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_GERMAN} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_KOREAN} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_RUSSIAN} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_SPANISH} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_SWEDISH} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_TRADCHINESE} "Other plugins available to install." +LangString DESC_SecPlugins ${LANG_SIMPCHINESE} "Other plugins available to install." + +LangString TITLE_SecExamplePlugin ${LANG_ENGLISH} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_CZECH} "Ukázkový doplněk" +LangString TITLE_SecExamplePlugin ${LANG_SLOVAK} "Ukázkový doplnek" +LangString TITLE_SecExamplePlugin ${LANG_DUTCH} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_FRENCH} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_GERMAN} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_KOREAN} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_RUSSIAN} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_SPANISH} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_SWEDISH} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_TRADCHINESE} "Example Plugin" +LangString TITLE_SecExamplePlugin ${LANG_SIMPCHINESE} "Example Plugin" +LangString DESC_SecExamplePlugin ${LANG_ENGLISH} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_CZECH} "Pouze ukázkový nic nedělající doplněk." +LangString DESC_SecExamplePlugin ${LANG_SLOVAK} "Pouze ukázkovy nic nerobiací doplnek." +LangString DESC_SecExamplePlugin ${LANG_DUTCH} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_FRENCH} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_GERMAN} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_KOREAN} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_RUSSIAN} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_SPANISH} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_SWEDISH} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_TRADCHINESE} "Useless example plugin." +LangString DESC_SecExamplePlugin ${LANG_SIMPCHINESE} "Useless example plugin." + +LangString TITLE_SecDesktop ${LANG_ENGLISH} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_CZECH} "Zástupce na ploše" +LangString TITLE_SecDesktop ${LANG_SLOVAK} "Zástupca na ploche" +LangString TITLE_SecDesktop ${LANG_DUTCH} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_FRENCH} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_GERMAN} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_KOREAN} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_RUSSIAN} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_SPANISH} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_SWEDISH} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_TRADCHINESE} "Desktop Icon" +LangString TITLE_SecDesktop ${LANG_SIMPCHINESE} "Desktop Icon" +LangString DESC_SecDesktop ${LANG_ENGLISH} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_CZECH} "Přidat zástupce na plochu." +LangString DESC_SecDesktop ${LANG_SLOVAK} "Pridat zástupca na plochu." +LangString DESC_SecDesktop ${LANG_DUTCH} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_FRENCH} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_GERMAN} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_KOREAN} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_RUSSIAN} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_SPANISH} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_SWEDISH} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_TRADCHINESE} "Add launcher to desktop." +LangString DESC_SecDesktop ${LANG_SIMPCHINESE} "Add launcher to desktop."