!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 WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown" \ "" \ "Markdown 文档" WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown\DefaultIcon" \ "" \ '"$INSTDIR\md-to-pdf.exe",0' WriteRegStr SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown\shell\open\command" \ "" \ '"$INSTDIR\md-to-pdf.exe" "%1"' WriteRegStr SHCTX \ "Software\Classes\.md\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" \ "" WriteRegStr SHCTX \ "Software\Classes\.markdown\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" \ "" WriteRegStr SHCTX \ "Software\Classes\Applications\md-to-pdf.exe\shell\open\command" \ "" \ '"$INSTDIR\md-to-pdf.exe" "%1"' WriteRegStr SHCTX \ "Software\Classes\Applications\md-to-pdf.exe\SupportedTypes" \ ".md" \ "" WriteRegStr SHCTX \ "Software\Classes\Applications\md-to-pdf.exe\SupportedTypes" \ ".markdown" \ "" CreateDirectory "$SMPROGRAMS\Markdown PDF 导出器" CreateShortCut \ "$SMPROGRAMS\Markdown PDF 导出器\Markdown PDF 导出器.lnk" \ "$INSTDIR\md-to-pdf.exe" \ "" \ "$INSTDIR\md-to-pdf.exe" CreateShortCut \ "$DESKTOP\Markdown PDF 导出器.lnk" \ "$INSTDIR\md-to-pdf.exe" \ "" \ "$INSTDIR\md-to-pdf.exe" StrCpy $launchLink "$INSTDIR\md-to-pdf.exe" !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 DeleteRegValue SHCTX \ "Software\Classes\.md\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" DeleteRegValue SHCTX \ "Software\Classes\.markdown\OpenWithProgids" \ "MarkdownPdfExporter.Markdown" DeleteRegKey SHCTX \ "Software\Classes\Applications\md-to-pdf.exe" DeleteRegKey SHCTX \ "Software\Classes\MarkdownPdfExporter.Markdown" Delete "$SMPROGRAMS\Markdown PDF 导出器\Markdown PDF 导出器.lnk" RMDir "$SMPROGRAMS\Markdown PDF 导出器" Delete "$DESKTOP\Markdown PDF 导出器.lnk" System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)' !macroend