162 lines
6.3 KiB
NSIS
162 lines
6.3 KiB
NSIS
!define MORPHDOC_DISPLAY_NAME "墨呈"
|
|
!define MORPHDOC_EXECUTABLE "MorphDoc.exe"
|
|
!define MORPHDOC_LEGACY_DISPLAY_NAME "Markdown PDF 导出器"
|
|
!define MORPHDOC_LEGACY_EXECUTABLE "md-to-pdf.exe"
|
|
|
|
!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\${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
|
|
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
|