最新消息:

NSIS一键安装打印机 博主在用是实用例子

nsis 永恒心锁 867浏览 0评论

AutoInstallPrinter.ini 文件说明

[PrinterInfo]
; 网络打印机的IP地址,如192.168.3.250
IP=
; 当前目录下打印机的驱动文件,如16L\oemsetup.inf
PrinterDrivePath=
; 打印机驱动的名称,在inf文件中找,如上面的oemsetup.inf里的PCL6 Driver for Universal Print
DrvName=
; 自定义在控制面板显示的名称,如16楼打印机室
CustomizePrinterName=

代码:

!define HAVE_UPX
!ifdef HAVE_UPX
!packhdr tmp.dat "upx -9 tmp.dat"
!endif

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
!include "x64.nsh"
!include "logiclib.nsh"
!include "Printer.nsh"
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "Printer.ico"
!define PRODUCT_NAME "进化论自动安装打印机工具"
!define PRODUCT_VERSION "2022.01.10.16"
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"

Var WINDOWS_Language ;WINDOWS语言
Var PrinterIp ;打印机的IP地址
Var PrinterDrivePath ;打印机驱动路径
Var CustomizePrinterName ;自定义打印机名称
Var DrvName ;打印机驱动名称
; 载入插件
!define pluginDir ".\plugins"
!addplugindir "${pluginDir}"

;文件版本声明
VIProductVersion ${PRODUCT_VERSION}
VIAddVersionKey /LANG=2052 "ProductName" "进化论自动安装打印机工具"
VIAddVersionKey /LANG=2052 "Comments" "永恒心锁"
VIAddVersionKey /LANG=2052 "CompanyName" "http://www.yhxs3344.net"
VIAddVersionKey /LANG=2052 "LegalTrademarks" "http://www.yhxs3344.net"
VIAddVersionKey /LANG=2052 "LegalCopyright" "永恒心锁"
VIAddVersionKey /LANG=2052 "FileDescription" "进化论自动安装打印机工具"
VIAddVersionKey /LANG=2052 "FileVersion" ${PRODUCT_VERSION}

; 检测程序是否已运行
!macro CheckRunningPrograms
System::Call 'kernel32::CreateMutexA(i 0, i 0, t"${PRODUCT_NAME}") i .r1 ?e'
Pop $R0
${If} $R0 <> 0
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "安装程序已经在运行,请不要多次打开程序"
Quit
${EndIf}
!macroend

XPStyle on
OutFile "AutoInstallPrinter.exe"
Caption "进化论自动安装打印机工具"

RequestExecutionLevel admin ;管理员权限

Section
Sectionend

SilentInstall silent

Function .onInit
!insertmacro CheckRunningPrograms ;安装程序运行检测的变量
InitPluginsDir
File /oname=$PLUGINSDIR\vbs.reg ".\nsPlugin\vbs.reg"
ClearErrors
ReadINIStr $PrinterIp "$EXEDIR\AutoInstallPrinter.ini" "PrinterInfo" "IP"
ReadINIStr $PrinterDrivePath "$EXEDIR\AutoInstallPrinter.ini" "PrinterInfo" "PrinterDrivePath"
ReadINIStr $DrvName "$EXEDIR\AutoInstallPrinter.ini" "PrinterInfo" "DrvName"
ReadINIStr $CustomizePrinterName "$EXEDIR\AutoInstallPrinter.ini" "PrinterInfo" "CustomizePrinterName"
ReadRegStr $WINDOWS_Language HKLM "SYSTEM\CurrentControlSet\Control\Nls\Language" "Default"
${If} $PrinterIp = ""
${AndIf} $PrinterDrivePath = ""
${AndIf} $DrvName = ""
${AndIf} $CustomizePrinterName = ""
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "配置信息有缺失,请查看AutoInstallPrinter.ini文件"
ExecWait '"$WINDIR\System32\notepad.exe" $EXEDIR\AutoInstallPrinter.ini'
Quit
${EndIf}

${If} ${RunningX64}
Call OSX64
${Else}
Call OSX86
${EndIf}
FunctionEnd

Function OSX86
nsExec::ExecToLog '"cmd" /c "$WINDIR\regedit.exe /s" "$PLUGINSDIR\vbs.reg"'
${If} $WINDOWS_Language = 0804
nsExec::ExecToLog '"cmd" /c "cscript $WINDIR\System32\Printing_Admin_Scripts\zh-cn\Prnport.vbs" -a -r $PrinterIp -h $PrinterIp -o raw -me -y public -n 9100'
Sleep 300
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "$CustomizePrinterName" /f "$EXEDIR\$PrinterDrivePath" /r "$PrinterIp" /m "$DrvName"'
Sleep 1000
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "打印机安装完成"
nsExec::ExecToLog '"cmd" /c "explorer shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"'
${EndIf}

${If} $WINDOWS_Language == 0409
nsExec::ExecToLog '"cmd" /c "cscript $WINDIR\System32\Printing_Admin_Scripts\en-US\Prnport.vbs" -a -r $PrinterIp -h $PrinterIp -o raw -me -y public -n 9100'
Sleep 300
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "$CustomizePrinterName" /f "$EXEDIR\$PrinterDrivePath" /r "$PrinterIp" /m "$DrvName"'
Sleep 1000
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "打印机安装完成"
nsExec::ExecToLog '"cmd" /c "explorer shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"'
${EndIf}
FunctionEnd

Function OSX64
# 关闭重定向
System::Call "Kernel32::Wow64EnableWow64FsRedirection(i 0)"
#修改VBS默认
nsExec::ExecToLog '"cmd" /c "$WINDIR\regedit.exe /s" "$PLUGINSDIR\vbs.reg"'

${If} $WINDOWS_Language = 0804
nsExec::ExecToLog '"cmd" /c "cscript $WINDIR\SysWOW64\Printing_Admin_Scripts\zh-cn\Prnport.vbs" -a -r $PrinterIp -h $PrinterIp -o raw -me -y public -n 9100'
Sleep 300
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "$CustomizePrinterName" /f "$EXEDIR\$PrinterDrivePath" /r "$PrinterIp" /m "$DrvName"'
Sleep 1000
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "打印机安装完成"
nsExec::ExecToLog '"cmd" /c "explorer shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"'
${EndIf}

${If} $WINDOWS_Language == 0409
nsExec::ExecToLog '"cmd" /c "cscript $WINDIR\SysWOW64\Printing_Admin_Scripts\en-US\Prnport.vbs" -a -r $PrinterIp -h $PrinterIp -o raw -me -y public -n 9100'
Sleep 300
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "$CustomizePrinterName" /f "$EXEDIR\$PrinterDrivePath" /r "$PrinterIp" /m "$DrvName"'
Sleep 1000
Messagebox MB_TOPMOST|MB_ICONINFORMATION|MB_OK "打印机安装完成"
nsExec::ExecToLog '"cmd" /c "explorer shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"'
${EndIf}

 # 恢复重定向
System::Call "Kernel32::Wow64EnableWow64FsRedirection(i 1)"
FunctionEnd

下载地址:

https://wwi.lanzouw.com/b04o6lelg

提取码:fm3p

免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » NSIS一键安装打印机 博主在用是实用例子

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址