🎨 Windows 端安装脚本检测是否存在工作空间数据 Fix https://github.com/siyuan-note/siyuan/issues/7717
This commit is contained in:
parent
851bf488c2
commit
c459615570
2 changed files with 79 additions and 10 deletions
|
@ -37,6 +37,7 @@ nsis:
|
|||
shortcutName: "SiYuan"
|
||||
license: "../LICENSE"
|
||||
include: "nsis/installer.nsh"
|
||||
warningsAsErrors: false
|
||||
installerSidebar: "nsis/installerSidebar.bmp"
|
||||
uninstallerSidebar: "nsis/uninstallerSidebar.bmp"
|
||||
|
||||
|
|
|
@ -2,19 +2,87 @@
|
|||
Caption "${PRODUCT_NAME} ${VERSION}"
|
||||
|
||||
!macro preInit
|
||||
nsExec::Exec 'TASKKILL /F /IM "SiYuan.exe"'
|
||||
nsExec::Exec 'TASKKILL /F /IM "SiYuan-Kernel.exe"'
|
||||
!macroend
|
||||
|
||||
!macro customInstallMode
|
||||
${IfNot} ${AtLeastWin10}
|
||||
MessageBox MB_ICONEXCLAMATION "即将停止对 Windows 7/8 和 Server 2012 的支持,建议升级到 Windows 10 或者更高版本。$\n$\n\
|
||||
Support for Windows 7/8 and Server 2012 will be stopped soon, it is recommended to upgrade to Windows 10 or higher version.$\n"
|
||||
${EndIf}
|
||||
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OKCANCEL "进行安装或卸载时会删除安装目录下所有文件,请务必确认工作空间没有放置在安装路径下!是否继续?$\n$\n\
|
||||
When installing or uninstalling, all files in the installation directory will be deleted, please make sure that the workspace is not placed in the installation path! Do you want to continue?$\n" IDOK yes IDCANCEL no
|
||||
no:
|
||||
Quit
|
||||
yes:
|
||||
nsExec::Exec 'TASKKILL /F /IM "SiYuan.exe"'
|
||||
nsExec::Exec 'TASKKILL /F /IM "SiYuan-Kernel.exe"'
|
||||
!macroend
|
||||
|
||||
!macro customUnInit
|
||||
${un.FindIt} "$INSTDIR" "data" $R0
|
||||
${If} -1 != $R0
|
||||
MessageBox MB_ICONSTOP "检测到安装路径下包含了工作空间数据 $R0,请将工作空间文件夹移到其他位置后再试。$\n$\n\
|
||||
The workspace data $R0 was detected in the installation path, please move the workspace folder to another location and try again.$\n"
|
||||
Quit
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
|
||||
# https://nsis.sourceforge.io/FindIt:_Simple_search_for_file_/_directory
|
||||
!macro un.FindIt In For Result
|
||||
Push "${In}"
|
||||
Push "${For}"
|
||||
Call un.FindIt
|
||||
Pop "${Result}"
|
||||
!macroend
|
||||
!define un.FindIt "!insertmacro un.FindIt"
|
||||
|
||||
Function un.FindIt
|
||||
Exch $R0
|
||||
Exch
|
||||
Exch $R1
|
||||
Push $R2
|
||||
Push $R3
|
||||
Push $R4
|
||||
Push $R5
|
||||
Push $R6
|
||||
|
||||
StrCpy $R6 -1
|
||||
StrCpy $R3 1
|
||||
|
||||
Push $R1
|
||||
|
||||
nextDir:
|
||||
Pop $R1
|
||||
IntOp $R3 $R3 - 1
|
||||
ClearErrors
|
||||
FindFirst $R5 $R2 "$R1\*.*"
|
||||
|
||||
nextFile:
|
||||
StrCmp $R2 "." gotoNextFile
|
||||
StrCmp $R2 ".." gotoNextFile
|
||||
|
||||
StrCmp $R2 $R0 0 isDir
|
||||
StrCpy $R6 "$R1\$R2"
|
||||
loop:
|
||||
StrCmp $R3 0 done
|
||||
Pop $R1
|
||||
IntOp $R3 $R3 - 1
|
||||
Goto loop
|
||||
|
||||
isDir:
|
||||
|
||||
IfFileExists "$R1\$R2\*.*" 0 gotoNextFile
|
||||
IntOp $R3 $R3 + 1
|
||||
Push "$R1\$R2"
|
||||
|
||||
gotoNextFile:
|
||||
FindNext $R5 $R2
|
||||
IfErrors 0 nextFile
|
||||
|
||||
done:
|
||||
FindClose $R5
|
||||
StrCmp $R3 0 0 nextDir
|
||||
StrCpy $R0 $R6
|
||||
|
||||
Pop $R6
|
||||
Pop $R5
|
||||
Pop $R4
|
||||
Pop $R3
|
||||
Pop $R2
|
||||
Pop $R1
|
||||
Exch $R0
|
||||
FunctionEnd
|
Loading…
Add table
Reference in a new issue