无忧启动论坛

 找回密码
 注册
搜索

300无忧币希望找个人帮忙写个静默安装程序

查看数: 824 | 评论数: 30 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-12-20 20:17

正文摘要:

本帖最后由 2012ccxbox 于 2025-12-20 22:57 编辑 1.zd的搜狗输入法自带静默参数/S,但是静默参数不能选择自己想要的组件 搜狗输入法v12.5.0.6558去广告精简优化版.exe - 蓝奏云 https://423down.lanzouo.com/iW ...

回复

likunrong 发表于 3 小时前
等高手
huangyi2008 发表于 6 小时前
qq362817567 发表于 2025-12-21 15:21
你所说的静默安装是完全看不到安装界面还是仅仅自动化操作?

这是个大神~
qq362817567 发表于 6 小时前
qq362817567 发表于 2025-12-21 15:21
你所说的静默安装是完全看不到安装界面还是仅仅自动化操作?

其实也还好,控件点击比坐标点击靠谱的多,窗口非激活状态应该也是能点到的。当然如果有大神直接给出静默包是最好了,期待。
2012ccxbox 发表于 7 小时前
nttwqz 发表于 2025-12-21 12:12
NSIS源码在此,其它文件自行从原安装包中提取。


即使不是最佳答案,100论坛也会奉上感谢提供新的思路
qq362817567 发表于 7 小时前
你所说的静默安装是完全看不到安装界面还是仅仅自动化操作?
  1. #Region ;**** 由 AutoIt3Wrapper_GUI 编译参数创建 ****
  2. #AutoIt3Wrapper_Icon=
  3. #AutoIt3Wrapper_Outfile=搜狗输入法自动安装.exe
  4. #AutoIt3Wrapper_Compression=4
  5. #AutoIt3Wrapper_UseUpx=y
  6. #AutoIt3Wrapper_Change2CUI=y
  7. #AutoIt3Wrapper_Run_AU3Check=n
  8. #EndRegion ;**** 由 AutoIt3Wrapper_GUI 编译参数创建 ****

  9. Opt("TrayIconHide", 1) ; 隐藏托盘图标
  10. Opt("WinTitleMatchMode", 2) ; 窗口标题部分匹配
  11. Opt("MouseClickDelay", 5) ; 减少鼠标点击延迟
  12. Opt("SendKeyDelay", 2) ; 减少按键延迟

  13. ; 主安装程序文件名
  14. Global $sSetupExe = "搜狗输入法v12.5.0.6558去广告精简优化版.exe"

  15. ; 气泡提示函数
  16. Func _ShowBubbleTip($sMessage)
  17.     ToolTip($sMessage, @DesktopWidth/2, 10, "搜狗输入法自动安装", 1, 1)
  18. EndFunc

  19. Func _ClearBubbleTip()
  20.     ToolTip("")
  21. EndFunc

  22. ; 等待特定控件出现
  23. Func _WaitForControl($hWnd, $sControlID, $iTimeout = 10)
  24.     Local $iStart = TimerInit()
  25.    
  26.     While TimerDiff($iStart) < $iTimeout * 1000
  27.         Local $hControl = ControlGetHandle($hWnd, "", $sControlID)
  28.         If $hControl Then
  29.             Return True
  30.         EndIf
  31.         Sleep(50)
  32.     WEnd
  33.    
  34.     Return False
  35. EndFunc

  36. ; 等待控件文本出现
  37. Func _WaitForControlText($hWnd, $sControlID, $sText, $iTimeout = 10)
  38.     Local $iStart = TimerInit()
  39.    
  40.     While TimerDiff($iStart) < $iTimeout * 1000
  41.         Local $hControl = ControlGetHandle($hWnd, "", $sControlID)
  42.         If $hControl Then
  43.             Local $sControlText = ControlGetText($hWnd, "", $sControlID)
  44.             If StringInStr($sControlText, $sText) Then
  45.                 Return True
  46.             EndIf
  47.         EndIf
  48.         Sleep(50)
  49.     WEnd
  50.    
  51.     Return False
  52. EndFunc

  53. ; 快速点击函数
  54. Func _QuickClick($hWnd, $sControlID)
  55.     Local $hControl = ControlGetHandle($hWnd, "", $sControlID)
  56.     If $hControl Then
  57.         ControlClick($hWnd, "", $sControlID)
  58.         Return True
  59.     EndIf
  60.     Return False
  61. EndFunc

  62. ; 处理已安装版本提示
  63. Func _HandleAlreadyInstalled()
  64.     Local $hWindow = WinWait("搜狗输入法", "系统里已经安装了相同的版本", 2)
  65.    
  66.     If $hWindow Then
  67.         _ShowBubbleTip("检测到已安装版本,点击是继续...")
  68.         WinActivate($hWindow)
  69.         Sleep(50)
  70.         
  71.         ; 使用多种方式点击"是"按钮
  72.         For $i = 1 To 3
  73.             ControlClick($hWindow, "", "[CLASS:Button; INSTANCE:1]")
  74.             Sleep(20)
  75.             ControlSend($hWindow, "", "", "{ENTER}")
  76.             Sleep(20)
  77.             
  78.             If Not WinExists($hWindow) Then
  79.                 ExitLoop
  80.             EndIf
  81.         Next
  82.         
  83.         ; 等待窗口关闭
  84.         Local $iWait = 0
  85.         While WinExists($hWindow) And $iWait < 5
  86.             Sleep(50)
  87.             $iWait += 1
  88.         WEnd
  89.         
  90.         Return True
  91.     EndIf
  92.    
  93.     Return False
  94. EndFunc

  95. ; 主要安装流程
  96. _ShowBubbleTip("启动安装程序...")

  97. ; 检查安装程序是否存在
  98. If Not FileExists($sSetupExe) Then
  99.     _ShowBubbleTip("错误: 未找到安装程序")
  100.     Sleep(1500)
  101.     _ClearBubbleTip()
  102.     Exit 1
  103. EndIf

  104. ; 运行安装程序
  105. Local $iPID = Run($sSetupExe)
  106. If $iPID = 0 Then
  107.     _ShowBubbleTip("错误: 无法启动安装程序")
  108.     Sleep(1500)
  109.     _ClearBubbleTip()
  110.     Exit 1
  111. EndIf

  112. Sleep(100) ; 短暂等待让安装程序启动

  113. ; 步骤0: 处理已安装版本提示
  114. _HandleAlreadyInstalled()

  115. ; 步骤1: 等待主安装窗口
  116. Local $hMainWindow = WinWait("搜狗输入法 安装", "", 5)
  117. If Not $hMainWindow Then
  118.     _ShowBubbleTip("错误: 未找到安装窗口")
  119.     Sleep(1500)
  120.     _ClearBubbleTip()
  121.     Exit 1
  122. EndIf

  123. _ShowBubbleTip("开始安装流程...")
  124. WinActivate($hMainWindow)
  125. Sleep(50)

  126. ; 步骤2: 点击第一个下一步
  127. _ShowBubbleTip("点击下一步...")
  128. _QuickClick($hMainWindow, "[ID:1]")
  129. Sleep(80)

  130. ; 步骤3: 检查并处理组件选择界面
  131. _ShowBubbleTip("检查组件选项...")
  132. If _WaitForControl($hMainWindow, "SysTreeView321", 2) Then
  133.     ; 组件选择界面存在,勾选第三项
  134.     ControlFocus($hMainWindow, "", "SysTreeView321")
  135.     Sleep(300)
  136.    
  137.     ControlTreeView($hMainWindow, "", "SysTreeView321", "Select", "#2")
  138.     Sleep(300)
  139.    
  140.     ControlSend($hMainWindow, "", "SysTreeView321", "{SPACE}")
  141.     Sleep(500)
  142.    
  143.     _ShowBubbleTip("继续下一步...")
  144.     _QuickClick($hMainWindow, "[ID:1]")
  145.     Sleep(80)
  146. EndIf

  147. ; 步骤4: 点击安装按钮
  148. _ShowBubbleTip("开始安装...")
  149. _QuickClick($hMainWindow, "[ID:1]")
  150. Sleep(80)

  151. ; 步骤5: 等待安装完成
  152. _ShowBubbleTip("正在安装...")

  153. ; 等待完成界面出现 - 等待"完成"按钮出现
  154. Local $bInstallComplete = False
  155. Local $iTimeout = 0

  156. While Not $bInstallComplete And $iTimeout < 60  ; 最多等待60秒
  157.     ; 检查窗口是否仍然存在
  158.     If Not WinExists($hMainWindow) Then
  159.         ; 窗口已关闭,可能安装已完成
  160.         _ShowBubbleTip("安装窗口已关闭,安装可能已完成")
  161.         $bInstallComplete = True
  162.         ExitLoop
  163.     EndIf
  164.    
  165.     ; 检查是否出现"完成"按钮
  166.     If _WaitForControlText($hMainWindow, "[ID:1]", "完成", 1) Then
  167.         _ShowBubbleTip("检测到完成按钮")
  168.         $bInstallComplete = True
  169.         ExitLoop
  170.     EndIf
  171.    
  172.     Sleep(500)
  173.     $iTimeout += 1
  174.    
  175.     ; 每5秒更新一次提示
  176.     If Mod($iTimeout, 10) = 0 Then
  177.         _ShowBubbleTip("正在安装... 已等待 " & $iTimeout/2 & " 秒")
  178.     EndIf
  179. WEnd

  180. _ClearBubbleTip()

  181. ; 步骤6: 处理安装完成界面
  182. If WinExists($hMainWindow) Then
  183.     ; 确保窗口激活
  184.     WinActivate($hMainWindow)
  185.     Sleep(100)
  186.    
  187.     _ShowBubbleTip("正在处理安装完成选项...")
  188.    
  189.     ; 首先等待并选择"不重启"选项
  190.     If _WaitForControl($hMainWindow, "[ID:1204]", 5) Then
  191.         _ShowBubbleTip("选择不重启选项...")
  192.         
  193.         ; 等待更长时间确保控件完全加载
  194.         Sleep(300)
  195.         
  196.         ; 点击不重启选项
  197.         For $i = 1 To 3
  198.             _QuickClick($hMainWindow, "[ID:1204]")
  199.             Sleep(100)
  200.             
  201.             ; 同时尝试文本点击
  202.             ControlClick($hMainWindow, "否,我会在之后重新启动(&N)", "[TEXT:否,我会在之后重新启动(&N)]")
  203.             Sleep(100)
  204.             
  205.             ; 尝试Button5
  206.             ControlClick($hMainWindow, "", "Button5")
  207.             Sleep(100)
  208.             
  209.             ; 等待选项生效
  210.             Sleep(200)
  211.         Next
  212.         
  213.         _ShowBubbleTip("不重启选项已选择")
  214.     EndIf
  215.    
  216.     ; 等待完成按钮完全出现
  217.     If _WaitForControlText($hMainWindow, "[ID:1]", "完成", 5) Then
  218.         _ShowBubbleTip("点击完成按钮...")
  219.         
  220.         ; 等待确保完成按钮可用
  221.         Sleep(300)
  222.         
  223.         ; 点击完成按钮
  224.         For $i = 1 To 3
  225.             _QuickClick($hMainWindow, "[ID:1]")
  226.             Sleep(100)
  227.             
  228.             ; 同时尝试文本点击
  229.             ControlClick($hMainWindow, "完成(&F)", "[TEXT:完成(&F)]")
  230.             Sleep(100)
  231.             
  232.             ; 尝试Button2
  233.             ControlClick($hMainWindow, "", "Button2")
  234.             Sleep(100)
  235.             
  236.             ; 检查窗口是否已关闭
  237.             If Not WinExists($hMainWindow) Then
  238.                 ExitLoop
  239.             EndIf
  240.         Next
  241.         
  242.         ; 如果窗口还在,尝试坐标点击
  243.         If WinExists($hMainWindow) Then
  244.             _ShowBubbleTip("使用坐标点击完成按钮...")
  245.             Local $aPos = WinGetPos($hMainWindow)
  246.             If IsArray($aPos) Then
  247.                 ; 根据您提供的坐标: 位置324,302 和 ControlClick坐标40,12
  248.                 Local $iClickX = $aPos[0] + 324 + 40
  249.                 Local $iClickY = $aPos[1] + 302 + 12
  250.                 MouseClick("left", $iClickX, $iClickY, 1, 0)
  251.                 Sleep(200)
  252.             EndIf
  253.         EndIf
  254.     EndIf
  255.    
  256.     ; 等待窗口关闭
  257.     Local $iCloseTimeout = 0
  258.     While WinExists($hMainWindow) And $iCloseTimeout < 10
  259.         _QuickClick($hMainWindow, "[ID:1]")
  260.         Sleep(200)
  261.         $iCloseTimeout += 1
  262.     WEnd
  263.    
  264.     If WinExists($hMainWindow) Then
  265.         _ShowBubbleTip("警告: 安装窗口仍未关闭")
  266.         Sleep(1000)
  267.     EndIf
  268. EndIf

  269. _ClearBubbleTip()

  270. ; 安装完成提示
  271. _ShowBubbleTip("搜狗输入法安装完成!")
  272. Sleep(800)
  273. _ClearBubbleTip()

  274. Exit 0
复制代码

点评

其实也还好,控件点击比坐标点击靠谱的多,窗口非激活状态应该也是能点到的。当然如果有大神直接给出静默包是最好了,期待。  详情 回复 发表于 6 小时前

评分

参与人数 1无忧币 +5 收起 理由
2012ccxbox + 5 有界面的话安装的时候如果鼠标键盘动了 会.

查看全部评分

好好学些 发表于 8 小时前
学习一下
孑然 发表于 9 小时前
等高手出作品!
liuyang2025 发表于 9 小时前
论坛里面有,搜索下看看
神话再现 发表于 9 小时前
全是高手
guong 发表于 10 小时前
来看一下
nttwqz 发表于 10 小时前
本帖最后由 nttwqz 于 2025-12-21 12:32 编辑

NSIS源码在此,其它文件自行从原安装包中提取。

搜狗拼音工具箱及扩展管理器组件源码.7z (202.24 KB, 下载次数: 15)

点评

即使不是最佳答案,100论坛也会奉上感谢提供新的思路  详情 回复 发表于 7 小时前

评分

参与人数 1无忧币 +5 收起 理由
2012ccxbox + 5

查看全部评分

nttwqz 发表于 10 小时前
本帖最后由 nttwqz 于 2025-12-21 12:32 编辑

懒得弄个完整版了,所以,将此组件独立了出来,需在其安装后安装,仅在沙盘中测试扩展管理器可以打开,其它自行测试,如需要完整版,请等待其他大神。



搜狗拼音工具箱及扩展管理器组件.7z (1001.12 KB, 下载次数: 6)


评分

参与人数 1无忧币 +5 收起 理由
2012ccxbox + 5 也是一种思路,感谢,这个也可以静默安装么.

查看全部评分

yyz2191958 发表于 11 小时前
18#的思路很好
austere 发表于 12 小时前
9zhmke 发表于 2025-12-21 09:49
一个思路是分析后重新打包,二是AU3隐藏界面再用鼠标键盘操作实现“静默”,不隐藏的话应该会更容易点。

楼上回复是正解
9zhmke 发表于 13 小时前
一个思路是分析后重新打包,二是AU3隐藏界面再用鼠标键盘操作实现“静默”,不隐藏的话应该会更容易点。

点评

楼上回复是正解  详情 回复 发表于 12 小时前
hhcha 发表于 14 小时前
等高手出作品!
xiaomiaom 发表于 14 小时前
找人重新封装一下输入法
PCHH 发表于 15 小时前
支持折腾
vsvsvs 发表于 16 小时前
低版本确实是好选择
gordonhf 发表于 22 小时前
等高手
RNM25728 发表于 昨天 23:17
坛里找 有的
2012ccxbox 发表于 昨天 22:56
邪恶海盗 发表于 2025-12-20 21:44
换低版本的,比如经典的6.7i不香么,还没那么多流氓...

6.7没手写 没语音。。
2012ccxbox 发表于 昨天 22:55
本帖最后由 2012ccxbox 于 2025-12-20 23:21 编辑
chishingchan 发表于 2025-12-20 21:24
给多少时间?Load.exe 类程序可以吗?

两个星期吧?所有方法都可以。。
1e3e 发表于 昨天 22:42
等高手
邪恶海盗 发表于 昨天 21:44
换低版本的,比如经典的6.7i不香么,还没那么多流氓...


二○二五年十二月二十日

点评

6.7没手写 没语音。。  详情 回复 发表于 昨天 22:56
smile_z 发表于 昨天 21:31
等高手
chishingchan 发表于 昨天 21:24
给多少时间?Load.exe 类程序可以吗?

点评

两个星期吧?所有方法都可以。。我只知道AU3可以  详情 回复 发表于 昨天 22:55
jlcc369 发表于 昨天 20:43
我用五笔,但支持折腾!
a66 发表于 昨天 20:30
等大佬...
yyz2191958 发表于 昨天 20:26
支持折腾,祝福早日解决问题

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-21 23:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表