| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- Name "PaoTin++ for Windows"
- OutFile setup.exe
- ShowInstDetails show
- AllowRootDirInstall true
- !include "FileFunc.nsh"
- !include "nsDialogs.nsh"
- !include "winmessages.nsh"
- Page custom SelectDriver
- Page instfiles
- var dialog
- var hctrl
- var drive
- Function getDrivesCallback
- ${NSD_CB_AddString} $hctrl "$9"
- Push $0
- FunctionEnd
- Function changeSelect
- ${NSD_GetText} $hctrl $0
- StrCpy $drive $0
- FunctionEnd
- Function SelectDriver
- nsDialogs::Create 1018
- Pop $dialog
- ${NSD_CreateLabel} 0 10u 100% 20u "Select which disk you want to install to:"
- Pop $hctrl
- ${NSD_CreateDropList} 0 30u 100% 80u "Select"
- Pop $hctrl
- ${GetDrives} "HDD" "getDrivesCallback"
- StrCpy $drive "C:\"
- ${NSD_CB_SelectString} $hctrl "$drive"
- ${NSD_OnChange} $hctrl "changeSelect"
- nsDialogs::Show
- FunctionEnd
- var file
- var dir
- Section
- StrCpy $drive $drive 2
- StrCpy $file "$TEMP\settings.json"
- FileOpen $R3 $file w
- FileWrite $R3 "{$\r$\n"
- FileWrite $R3 " $\"profiles$\": $\r$\n"
- FileWrite $R3 " {$\r$\n"
- FileWrite $R3 " $\"defaults$\": {},$\r$\n"
- FileWrite $R3 " $\"list$\": $\r$\n"
- FileWrite $R3 " [$\r$\n"
- FileWrite $R3 " {$\r$\n"
- FileWrite $R3 " $\"commandline$\": $\"$drive\\paotin\\bin\\tt++.exe ids/tintin$\",$\r$\n"
- FileWrite $R3 " $\"guid$\": $\"{0b778637-b3ef-410d-b678-3f825e2cdef1}$\",$\r$\n"
- FileWrite $R3 " $\"hidden$\": true,$\r$\n"
- FileWrite $R3 " $\"name$\": $\"WinTin++$\",$\r$\n"
- FileWrite $R3 " $\"startingDirectory$\": $\"$drive\\paotin$\"$\r$\n"
- FileWrite $R3 " },$\r$\n"
- FileWrite $R3 " {$\r$\n"
- FileWrite $R3 " $\"commandline$\": $\"$drive\\paotin\\bin\\tt++.exe ids/paotin$\",$\r$\n"
- FileWrite $R3 " $\"guid$\": $\"{0b778637-b3ef-410d-b678-3f825e2cdef2}$\",$\r$\n"
- FileWrite $R3 " $\"hidden$\": true,$\r$\n"
- FileWrite $R3 " $\"name$\": $\"PaoTin++ for Windows$\",$\r$\n"
- FileWrite $R3 " $\"startingDirectory$\": $\"$drive\\paotin$\"$\r$\n"
- FileWrite $R3 " },$\r$\n"
- FileWrite $R3 " {$\r$\n"
- FileWrite $R3 " $\"commandline$\": $\"$drive\\paotin\\bin\\tt++.exe ids/pkuxkx$\",$\r$\n"
- FileWrite $R3 " $\"guid$\": $\"{0b778637-b3ef-410d-b678-3f825e2cdef3}$\",$\r$\n"
- FileWrite $R3 " $\"hidden$\": false,$\r$\n"
- FileWrite $R3 " $\"name$\": $\"\u5317\u5927\u4fa0\u5ba2\u884c$\",$\r$\n"
- FileWrite $R3 " $\"startingDirectory$\": $\"$drive\\paotin$\"$\r$\n"
- FileWrite $R3 " },$\r$\n"
- FileWrite $R3 " {$\r$\n"
- FileWrite $R3 " $\"commandline$\": $\"$drive\\paotin\\bin\\tt++.exe ids/thuxyj$\",$\r$\n"
- FileWrite $R3 " $\"guid$\": $\"{0b778637-b3ef-410d-b678-3f825e2cdef4}$\",$\r$\n"
- FileWrite $R3 " $\"hidden$\": false,$\r$\n"
- FileWrite $R3 " $\"name$\": $\"\u6e05\u534e\u897f\u6e38\u8bb0$\",$\r$\n"
- FileWrite $R3 " $\"startingDirectory$\": $\"$drive\\paotin$\"$\r$\n"
- FileWrite $R3 " }$\r$\n"
- FileWrite $R3 " ]$\r$\n"
- FileWrite $R3 " }$\r$\n"
- FileWrite $R3 "}$\r$\n"
- FileClose $R3
- StrCpy $dir "$LocalAppData\Microsoft\Windows Terminal\Fragments\PaoTin++"
- CreateDirectory "$dir"
- CopyFiles /SILENT "$file" "$dir"
- RMDir "$LocalAppData\Microsoft\Windows Terminal Preview\Fragments\PaoTin++"
- SectionEnd
- Section
- StrCpy $INSTDIR "$drive\paotin"
- StrCpy $OUTDIR "$drive\paotin"
- SetOutPath "$INSTDIR"
- RMDir "$INSTDIR"
- File /r *
- StrCpy $file "$drive\paotin\etc\windows.tin"
- FileOpen $R3 $file w
- FileWrite $R3 "#var gPaoTinPath {$drive/paotin};$\r$\n"
- FileWrite $R3 "#var gPaoTinVarPath {$drive/my-paotin};$\r$\n"
- FileClose $R3
- SectionEnd
- !define CreateJunction "!insertmacro CreateJunction"
- Function CreateJunction
- Exch $4
- Exch
- Exch $5
- Push $1
- Push $2
- Push $3
- Push $6
- CreateDirectory "$5"
- System::Call "kernel32::CreateFileW(w `$5`, i 0x40000000, i 0, i 0, i 3, i 0x02200000, i 0) i .r6"
- ${If} $0 = "-1"
- StrCpy $0 "0"
- RMDir "$5"
- goto create_junction_end
- ${EndIf}
- CreateDirectory "$4" ; Windows XP requires that the destination exists
- StrCpy $4 "\??\$4"
- StrLen $0 $4
- IntOp $0 $0 * 2
- IntOp $1 $0 + 2
- IntOp $2 $1 + 10
- IntOp $3 $1 + 18
- System::Call "*(i 0xA0000003, &i4 $2, &i2 0, &i2 $0, &i2 $1, &i2 0, &w$1 `$4`, &i2 0)i.r2"
- System::Call "kernel32::DeviceIoControl(i r6, i 0x900A4, i r2, i r3, i 0, i 0, *i r4r4, i 0) i.r0"
- System::Call "kernel32::CloseHandle(i r6) i.r1"
- ${If} $0 == "0"
- RMDir "$5"
- ${EndIf}
- create_junction_end:
- Pop $6
- Pop $3
- Pop $2
- Pop $1
- Pop $5
- Pop $4
- FunctionEnd
- !macro CreateJunction Junction Target outVar
- Push $0
- Push "${Junction}"
- Push "${Target}"
- Call CreateJunction
- StrCpy ${outVar} $0
- Pop $0
- !macroend
- Section
- CreateDirectory "$drive\my-paotin"
- CreateDirectory "$drive\my-paotin\ids"
- CreateDirectory "$drive\my-paotin\etc"
- CreateDirectory "$drive\my-paotin\data"
- CreateDirectory "$drive\my-paotin\log"
- CreateDirectory "$drive\my-paotin\plugins"
- ${CreateJunction} "$drive\paotin\var" "$drive\my-paotin" $0
- SectionEnd
|