!define MORPHDOC_DISPLAY_NAME "墨呈" !define MORPHDOC_EXECUTABLE "MorphDoc.exe" !define MORPHDOC_LEGACY_DISPLAY_NAME "Markdown PDF 导出器" !define MORPHDOC_LEGACY_EXECUTABLE "md-to-pdf.exe" !define MORPHDOC_LEGACY_INSTALL_REGISTRY_KEY "Software\${APP_GUID}" ; 保持 APP_GUID 与卸载身份不变,但不再沿用旧产品名对应的安装目录。 ; electron-builder 会从 INSTALL_REGISTRY_KEY 读取历史 InstallLocation;使用 ; 独立键可让 v0.6.0 默认进入 MorphDoc 目录,同时仍由相同卸载身份识别旧版。 !define INSTALL_REGISTRY_KEY "Software\${APP_GUID}.MorphDoc" !ifdef FONT_PACK_COMPANION_FILE !ifndef BUILD_UNINSTALLER !include "FileFunc.nsh" !include "nsDialogs.nsh" Var fontPackCompanionAvailable Var fontPackCompanionCheckbox Var fontPackCompanionExitCode Var fontPackCompanionHash Var fontPackCompanionPath Var fontPackCompanionSelected !macro customInit StrCpy $fontPackCompanionAvailable "0" StrCpy $fontPackCompanionSelected "0" StrCpy $fontPackCompanionPath "$EXEDIR\${FONT_PACK_COMPANION_FILE}" IfFileExists "$fontPackCompanionPath" 0 font_pack_init_done ${StdUtils.HashFile} $fontPackCompanionHash "SHA2-256" "$fontPackCompanionPath" StrCmp $fontPackCompanionHash "${FONT_PACK_COMPANION_SHA256}" 0 font_pack_init_done StrCpy $fontPackCompanionAvailable "1" IfSilent font_pack_silent font_pack_interactive font_pack_interactive: StrCpy $fontPackCompanionSelected "1" Goto font_pack_init_done font_pack_silent: ${GetParameters} $R0 ${GetOptions} $R0 "/WITHFONTPACK=" $R1 StrCmp $R1 "1" 0 font_pack_init_done StrCpy $fontPackCompanionSelected "1" font_pack_init_done: !macroend Function FontPackCompanionPage StrCmp $fontPackCompanionAvailable "1" 0 font_pack_page_skip nsDialogs::Create 1018 Pop $R0 StrCmp $R0 "error" 0 +2 Abort ${NSD_CreateLabel} 0 0 100% 28u "检测到经过完整性校验的墨呈可选字体包。安装后,政企公文主题可使用与 PDF 相同的原生中文字体资产。" Pop $R0 ${NSD_CreateCheckbox} 0 38u 100% 14u "安装 ${FONT_PACK_COMPANION_NAME}" Pop $fontPackCompanionCheckbox ${NSD_Check} $fontPackCompanionCheckbox nsDialogs::Show Return font_pack_page_skip: Abort FunctionEnd Function FontPackCompanionPageLeave ${NSD_GetState} $fontPackCompanionCheckbox $R0 StrCmp $R0 ${BST_CHECKED} 0 font_pack_page_unchecked StrCpy $fontPackCompanionSelected "1" Return font_pack_page_unchecked: StrCpy $fontPackCompanionSelected "0" FunctionEnd !macro customPageAfterChangeDir Page custom FontPackCompanionPage FontPackCompanionPageLeave !macroend !endif !endif !macro customInstall DeleteRegKey SHCTX "${MORPHDOC_LEGACY_INSTALL_REGISTRY_KEY}" WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown" \ "" \ "Markdown 文档" WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown\DefaultIcon" \ "" \ '"$INSTDIR\${MORPHDOC_EXECUTABLE}",0' WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown\shell\open\command" \ "" \ '"$INSTDIR\${MORPHDOC_EXECUTABLE}" "%1"' WriteRegStr SHCTX \ "Software\Classes\.md\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" \ "" WriteRegStr SHCTX \ "Software\Classes\.markdown\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" \ "" WriteRegStr SHCTX \ "Software\Classes\Applications\${MORPHDOC_EXECUTABLE}\shell\open\command" \ "" \ '"$INSTDIR\${MORPHDOC_EXECUTABLE}" "%1"' WriteRegStr SHCTX \ "Software\Classes\Applications\${MORPHDOC_EXECUTABLE}\SupportedTypes" \ ".md" \ "" WriteRegStr SHCTX \ "Software\Classes\Applications\${MORPHDOC_EXECUTABLE}\SupportedTypes" \ ".markdown" \ "" DeleteRegKey SHCTX \ "Software\Classes\Applications\${MORPHDOC_LEGACY_EXECUTABLE}" Delete "$SMPROGRAMS\${MORPHDOC_LEGACY_DISPLAY_NAME}\${MORPHDOC_LEGACY_DISPLAY_NAME}.lnk" RMDir "$SMPROGRAMS\${MORPHDOC_LEGACY_DISPLAY_NAME}" Delete "$DESKTOP\${MORPHDOC_LEGACY_DISPLAY_NAME}.lnk" CreateDirectory "$SMPROGRAMS\${MORPHDOC_DISPLAY_NAME}" CreateShortCut \ "$SMPROGRAMS\${MORPHDOC_DISPLAY_NAME}\${MORPHDOC_DISPLAY_NAME}.lnk" \ "$INSTDIR\${MORPHDOC_EXECUTABLE}" \ "" \ "$INSTDIR\${MORPHDOC_EXECUTABLE}" CreateShortCut \ "$DESKTOP\${MORPHDOC_DISPLAY_NAME}.lnk" \ "$INSTDIR\${MORPHDOC_EXECUTABLE}" \ "" \ "$INSTDIR\${MORPHDOC_EXECUTABLE}" StrCpy $launchLink "$INSTDIR\${MORPHDOC_EXECUTABLE}" !ifdef FONT_PACK_COMPANION_FILE StrCmp $fontPackCompanionAvailable "1" 0 font_pack_install_done StrCmp $fontPackCompanionSelected "1" 0 font_pack_install_done ${StdUtils.HashFile} $fontPackCompanionHash "SHA2-256" "$fontPackCompanionPath" StrCmp $fontPackCompanionHash "${FONT_PACK_COMPANION_SHA256}" 0 font_pack_integrity_failed DetailPrint "正在安装可选字体包:${FONT_PACK_COMPANION_NAME}" ExecWait '"$fontPackCompanionPath" /S' $fontPackCompanionExitCode StrCmp $fontPackCompanionExitCode "0" font_pack_install_done DetailPrint "可选字体包安装失败,退出码:$fontPackCompanionExitCode" IfSilent font_pack_install_done 0 MessageBox MB_ICONEXCLAMATION|MB_OK "主程序已安装,但可选字体包安装失败(退出码 $fontPackCompanionExitCode)。您可以稍后单独运行字体包安装器。" Goto font_pack_install_done font_pack_integrity_failed: DetailPrint "可选字体包完整性复核失败,已跳过安装。" IfSilent font_pack_install_done 0 MessageBox MB_ICONEXCLAMATION|MB_OK "可选字体包完整性复核失败,主程序已安装,但字体包已跳过。" font_pack_install_done: !endif System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)' !macroend !macro customUnInstall DeleteRegKey SHCTX "${MORPHDOC_LEGACY_INSTALL_REGISTRY_KEY}" DeleteRegValue SHCTX \ "Software\Classes\.md\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" DeleteRegValue SHCTX \ "Software\Classes\.markdown\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" DeleteRegKey SHCTX \ "Software\Classes\Applications\${MORPHDOC_EXECUTABLE}" DeleteRegKey SHCTX \ "Software\Classes\Applications\${MORPHDOC_LEGACY_EXECUTABLE}" DeleteRegKey SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown" Delete "$SMPROGRAMS\${MORPHDOC_DISPLAY_NAME}\${MORPHDOC_DISPLAY_NAME}.lnk" RMDir "$SMPROGRAMS\${MORPHDOC_DISPLAY_NAME}" Delete "$DESKTOP\${MORPHDOC_DISPLAY_NAME}.lnk" Delete "$SMPROGRAMS\${MORPHDOC_LEGACY_DISPLAY_NAME}\${MORPHDOC_LEGACY_DISPLAY_NAME}.lnk" RMDir "$SMPROGRAMS\${MORPHDOC_LEGACY_DISPLAY_NAME}" Delete "$DESKTOP\${MORPHDOC_LEGACY_DISPLAY_NAME}.lnk" System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)' !macroend