脚本:紫光拼音迷你智能版

优质
小牛编辑
115浏览
2023-12-01
为了减小体积,没有将资源文件一起提供,只提供了一个文件列表filelist.txt。你可以自己从已安装的输入法目录中获取并复制到提示的相应目录位置,然后进行编译即可。

引用 Hsunispim.nsi 的内容:

#############################
#    Engine @ Hesungstduio  #
#     紫光拼音迷你智能版    #
#############################

;;你可以借鉴它打包自己的输入法或是自己喜爱的输入法和朋友们内部分享。
;;时间仓促,注释不好,请见凉...


## 调用编译器现编译Hsunistools.nsh用来更新Hsunis.dll
!execute '"${NSISDIR}\makensis.exe" "Hsunistools.nsh"'

## 设置NSIS压缩器 ##
SetCompressor /SOLID lzma	;;请使用NSIS2.08以上版本

## 包含头文件 ##
!include 	"MUI.nsh"
!include	"PublicFuncS.nsh"
## 预定义 ##
!define		ICON_NAME	Hsunis_main
!define 	MUI_ICON 	"Icons\${ICON_NAME}.ico"

!define	 /date	DATEFULL	"%Y.%m.%d.%H"
!define	 /date	DATE	"%Y.%m.%d"
!define			VER	"Build ${DATE}"

## 基本属性设置 ##
Name			"紫光拼音"
Caption			"紫光拼音"
SilentInstall 	silent
CRCCheck		off
XPStyle 		on

## 安装程序文件输出 ##
OutFile		"Hsunispim.exe"

## 插入语言宏和其他 ##
!insertmacro MUI_LANGUAGE "simpchinese"
VIProductVersion "${DATEFULL}"
VIAddVersionKey /LANG=2052  "FileVersion" "版本:${VER}$\r$\n创建:Engine黑闪工作室"
VIAddVersionKey /LANG=2052  "ProductName" "紫光拼音 3.0 迷你版"
VIAddVersionKey /LANG=2052  "Comments" "紫光拼音输入法迷你版  $\r$\n基于紫光拼音3.0创建, $\r$\n具有除因特网搜索之外  $\r$\n紫光拼音原版全部功能,清华紫光软件版权所有。黑闪工作室成员Engine 编写迷你版策略和脚本。"
VIAddVersionKey /LANG=2052  "CompanyName" "Hesung Studio"
VIAddVersionKey /LANG=2052  "LegalCopyright" "北京清华紫光软件股份有限公司"
VIAddVersionKey /LANG=2052  "FileDescription" "Hesung Tools"
VIAddVersionKey /LANG=2052  "ProductVersion" "清华紫光拼音输入法$\r$\n引擎版本3.0.0.3045"
VIAddVersionKey /LANG=2052  "OriginalFilename" "Hsunispim.exe"


## 函数 .OnInit //主功能初始化函数 ##
Function .OnInit

	;;窗体互斥处理
	FindWindow $1 '#32770' '紫光拼音管理工具' 0 $1
	IntCmp $1 0 FindNextWindow
	SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
	ShowWindow $1 1
	Abort
	FindNextWindow:
	FindWindow $1 'TApplication' '紫光拼音输入法-属性设置和管理中心' 0 $1
	IntCmp $1 0 NormalShow
	SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
	ShowWindow $1 1
	Abort
	NormalShow:

	Call GetParameters 	;;获取命令行参数给$R0
	Pop $R0

	StrCmp $R0 "" 	Normal
	StrCmp $R0 "/h" Help
	StrCmp $R0 "-h" Help

	;;检测是否存在紫光拼音5的核心特征文件。
	IfFileExists "$SYSDIR\unispim5.ime" 0 +2
	IfFileExists "$SYSDIR\IME\Unispim\upimcfg5.exe" Unispim5_installed

	StrCmp $R0 "/c" Config
	StrCmp $R0 "-c" Config
	StrCmp $R0 "/u" Uninst
	StrCmp $R0 "-u" Uninst
	StrCmp $R0 "/n" OnlyFiles
	StrCmp $R0 "-n" OnlyFiles
	StrCmp $R0 "/f" ShowGUI
	StrCmp $R0 "-f" ShowGUI
	StrCmp $R0 "/r" Restore
	StrCmp $R0 "-r" Restore Normal

	Uninst:
	IfFileExists "$SYSDIR\unispim.ime" 0 SpecialDir
	IfFileExists "$SYSDIR\upengine.dll" 0 SpecialDir
	IfFileExists "$SYSDIR\IME\Unispim\Hsunis.dll" +3
	SetOutPath "$SYSDIR\IME\Unispim"
	File "Tools\Hsunis.dll"
	Exec `"$SYSDIR\IME\Unispim\Hsunis.dll" -u`
	Quit
	SpecialDir:
	IfFileExists "$TEMP\Hsunis.tmp" +2
	File "/oname=$TEMP\Hsunis.tmp" "Tools\Hsunis.dll"
	Exec `"$TEMP\Hsunis.tmp" -u`
	Abort

	ShowGUI:
	IfFileExists "$SYSDIR\unispim.ime" 0 NotInstalled
	IfFileExists "$SYSDIR\upengine.dll" 0 NotInstalled
	IfFileExists "$SYSDIR\IME\Unispim\Hsunis.dll" +3
	SetOutPath "$SYSDIR\IME\Unispim"
	File "Tools\Hsunis.dll"
	Exec "$SYSDIR\IME\Unispim\Hsunis.dll"
	Quit

	NotInstalled:
	;;窗体互斥
	SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
	Pop $0
	StrCmp $0 0 ShowAsk
	StrLen $0 "$(^Name)"
	IntOp $0 $0 + 1
	loop1:
	FindWindow $1 '#32770' '' 0 $1
	IntCmp $1 0 +4
	SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i."
	StrCmp $2 "$(^Name)" 0 loop1
	SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
	ShowWindow $1 1
	Abort
	ShowAsk:
	MessageBox MB_YESNO|MB_ICONQUESTION  "当前系统中没有安装紫光拼音输入法 3.0,是否现在进行安装?  " IDYES Restore
	Quit

	Help:
	;;窗体互斥
	SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
	Pop $0
	StrCmp $0 0 ShowHelp
	StrLen $0 "$(^Name)"
	IntOp $0 $0 + 1
	loop:
	FindWindow $1 '#32770' '' 0 $1
	IntCmp $1 0 +4
	SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i."
	StrCmp $2 "$(^Name)" 0 loop
	SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
	ShowWindow $1 1
	Abort
	ShowHelp:
	MessageBox MB_OK "$\n\
	H (帮助):弹出紫光拼音迷你版的参数说明。$\r$\n\
	F (界面):显示紫光拼音智能操作管理界面。$\r$\n\
	N (特别):安装时不添加控制面板卸载信息。$\r$\n\
	C (配置):载入紫光拼音输入法的优化配置。$\r$\n\
	R (修复):对紫光拼音输入法进行覆盖安装。$\r$\n\
	U (卸载):卸载已经安装的紫光拼音输入法。"
	Quit

	Config:
	IfFileExists "$SYSDIR\unispim.ime" 0 Restore
	IfFileExists "$SYSDIR\upengine.dll" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\upimcfg.exe" RegCfg Restore
	OnlyFiles:
	StrCpy $R9 "NoUninstRegKey"

	Normal:
	;;检测是否存在紫光5的特征文件
	IfFileExists "$SYSDIR\unispim5.ime" 0 +2
	IfFileExists "$SYSDIR\IME\Unispim\upimcfg5.exe" Unispim5_installed

	;;检测核心文件
	IfFileExists "$SYSDIR\unispim.ime" 0 Restore
	IfFileExists "$SYSDIR\upengine.dll" 0 Restore

	;;检测文件Dat类型
	IfFileExists "$SYSDIR\IME\Unispim\syswl.dat" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\bcoc.dat" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\hzfreq.dat" 0 Restore

	;;检测文件Exe类型
	IfFileExists "$SYSDIR\IME\Unispim\upcfgwiz.exe" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\upimcfg.exe" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\wlmerge.exe" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\wlbackup.exe" 0 Restore

	;;检测重要manifest类型
	IfFileExists "$SYSDIR\IME\Unispim\upimcfg.exe.manifest" 0 Restore

	;;检测Chm & dll类型
	IfFileExists "$SYSDIR\IME\Unispim\unispim.chm" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\upimset.dll" 0 Restore

	;;检测概要INI类型
	IfFileExists "$SYSDIR\IME\Unispim\spewords.ini" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\chnsym.ini" 0 Restore
	IfFileExists "$SYSDIR\IME\Unispim\unispimsp.ini" 0 Restore

	;;检测当前用户是否存在配置
	ClearErrors
	ReadRegDWORD $R0 HKCU "Software\Thunisoft\Unispim\3.0" "输入栏字体大小"
	IfErrors 0 ExeC
	Services::IsProcessUserAdministrator
	Pop $0
	StrCmp $0 "NO" ExeC ImmInst

	Restore:
	Services::IsProcessUserAdministrator
	Pop $0
	StrCmp $0 "NO" 0 Pass

	Call GetWindowsVer
	Pop $R0
	StrCmp $R0 "XP" Notify
	StrCmp $R0 "2003" Notify
	StrCmp $R0 "Other" Notify

	MessageBox MB_OK|MB_ICONINFORMATION "当前用户组没有权限安装输入法,请以管理员身份登录。  "
	Quit

	Notify:
	NotifyIcon::Icon /NOUNLOAD "iy" 103
	NotifyIcon::Icon /NOUNLOAD "b" "紫光输入法安装提示" "当前用户组没有权限安装输入法,请以管理员身份登录。"
	Sleep 8000
	NotifyIcon::Icon "r"
	Sleep 1000
	Quit

	Pass:
	RMDir /r "$APPDATA\Unispim"

	DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" 
	DeleteRegKey HKCU "Software\Microsoft\Installer\Products\D735C12C8346475428C5BF1BBCB75BC4"
	DeleteRegKey HKCU "S-1-5-21-2052111302-1958367476-839522115-1003\Software\Microsoft\Installer\Products\D735C12C8346475428C5BF1BBCB75BC4"

	StrCmp $R9 "NoUninstRegKey" DoneRegUninstall
	MoreInfo::GetOSUserinterfaceLanguage ;;MoreInfo插件这里获取操作系统shell语言
	Pop $LANGUAGE
	StrCmp $LANGUAGE "2052" SimpChineseString
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "DisplayName" "Thunisoft Unispim IME 3.0"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "DisplayIcon" "$SYSDIR\IME\Unispim\upimcfg.exe"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "Publisher" "Beijing Thunisoft Corporation"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "UninstallString" `"$SYSDIR\IME\Unispim\Hsunis.dll" -Uninstall`
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "ModifyPath" `"$SYSDIR\IME\Unispim\Hsunis.dll" -Restore`
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "Specical Description" "This Smart Installer is Created by SupEngine at Hesung Studio."
	Goto DoneRegUninstall
	SimpChineseString:
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "DisplayName" "紫光拼音输入法 3.0"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "DisplayIcon" "$SYSDIR\IME\Unispim\upimcfg.exe"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "Publisher" "北京清华紫光软件股份有限公司"
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "UninstallString" `"$SYSDIR\IME\Unispim\Hsunis.dll" -Uninstall`
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "ModifyPath" `"$SYSDIR\IME\Unispim\Hsunis.dll" -Restore`
	WriteRegStr  HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" "Specical Description" "黑闪工作室迷你智能安装策略版本"
	DoneRegUninstall:
	ClearErrors

	SetOutPath "$SYSDIR"
	File "Imekernel\unispim.ime"
	File "Imekernel\upengine.dll"
	SetOutPath "$SYSDIR\IME"
	File /r "Unispim"
	SetOutPath "$SYSDIR\IME\Unispim"
	File "Tools\Hsunis.dll"

	ImmInst:
	System::Call 'imm32::ImmInstallIME(t "$SYSDIR\unispim.ime" ,t "紫光拼音输入法 3.0")'

	RegCfg:
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "输入风格"			0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "用字母键选择候选字词"	0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "使用双拼输入"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "双拼输入时显示提示信息"	0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "光标跟随"			0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "动态调整词频"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "自动隐藏低频词"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "动态调整字频"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "最近输入字优先"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "每页最多候选个数"		0x00000005
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "中英文输入切换键"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "回车键定义"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "多个候选翻页键"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "输入第二第三候选字词键" 	0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "以词定字选字键"		0x00000002
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "软键盘开关键"		0x00000011
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "输入栏字体大小"		0x0000000e
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "输入栏显示样式"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "状态条显示"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "状态条位置"		10000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "支持GBK大字符集"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "输入简体汉字"		0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "智能组词"			0x00000001
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "智能组词自动记忆"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "按前次输入动态调整字序"	0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "数字后跟随英文符号"	0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "打开时默认为英文输入状态"	0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "v状态可输入空格"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "声母模糊音设置"		0x00ffffff
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "属性设置保存提示"		0x00000000
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "一次输入汉字最多个数"	0x0000000c
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "中文符号"			0x00000400
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "软键盘索引"		0x00000008
	WriteRegDWORD HKCU "Software\Thunisoft\Unispim\3.0" "记忆并可输入最近输入过的字词"	 1
	WriteRegBin   HKCU "Software\Thunisoft\Unispim\3.0" "韵母模糊音设置"	  ffffffff0f000000
	WriteRegStr   HKCU "Software\Thunisoft\Unispim\3.0" "输入栏中文字体"		"宋体"
	WriteRegStr   HKCU "Software\Thunisoft\Unispim\3.0" "输入栏英文字体"		"Tahoma"

	DeleteRegKey  HKCR "紫光拼音输入法词库备份文件"
	WriteRegStr   HKCR ".uwl" "" "UnispimWlbackup.file"
	WriteRegStr   HKCR "UnispimWlbackup.file" "" "紫光拼音词库备份文件"
	WriteRegStr   HKCR "UnispimWlbackup.file\DefaultIcon" "" "$SYSDIR\IME\unispim\wlbackup.exe,0"
	WriteRegStr   HKCR "UnispimWlbackup.file\shell" "" "open"
	WriteRegStr   HKCR "UnispimWlbackup.file\shell\open\command" "" `"$SYSDIR\IME\unispim\wlbackup.exe$\" $\"%1$\"`
	WriteRegStr   HKCR "UnispimWlbackup.file\shell\open" "" "导入词库(&A)"

	;;运行紫光拼音3配置中心程序 并自动退出
	ExeC:
	Exec "$SYSDIR\IME\Unispim\upimcfg.exe"
	ClearErrors
	Quit
	
	## 给出已安装紫光拼音5的提示,并清理可能的残留项目
	Unispim5_installed:
	;;窗体互斥
	SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
	Pop $0
	StrCmp $0 0 ShowVer5
	StrLen $0 "$(^Name)"
	IntOp $0 $0 + 1
	loop3:
	FindWindow $1 '#32770' '' 0 $1
	IntCmp $1 0 +4
	SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i."
	StrCmp $2 "$(^Name)" 0 loop3
	SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
	ShowWindow $1 1
	Abort
	ShowVer5:
	MessageBox MB_OK|MB_ICONINFORMATION  "当前系统中已存在紫光拼音 5.0,请将其卸载后再执行该程序。  "
	DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C21C537D-6438-4574-825C-FBB1CB7BB54C}" 
	DeleteRegKey HKCR "UnispimWlbackup.file"
	DeleteRegKey HKCU "Software\Classes\UnispimWlbackup.file"
	DeleteRegKey HKCU  "Software\Microsoft\Installer\Products\D735C12C8346475428C5BF1BBCB75BC4"
	DeleteRegKey HKCU "Software\Thunisoft\Unispim\3.0"
	DeleteRegKey HKCU "Software\Thunisoft\紫光拼音输入法3.0"
	SetOutPath "$SYSDIR"
	File "Tools\DeleteIME.Dll"
	ExecWait '"$SYSDIR\DeleteIME.Dll" /c unispim.ime'
	Delete /REBOOTOK "$SYSDIR\DeleteIME.Dll"
	ClearErrors
	Delete /REBOOTOK "$TEMP\Hsunis.tmp"
	Quit

FunctionEnd ;;.onInit


Section "NoFuntion" ;;形式
SectionEnd

点击另存附件