无忧启动论坛

标题: 300无忧币希望找个人帮忙写个静默安装程序 [打印本页]

作者: 2012ccxbox    时间: 昨天 20:17
标题: 300无忧币希望找个人帮忙写个静默安装程序
本帖最后由 2012ccxbox 于 2025-12-20 22:57 编辑

1.zd的搜狗输入法自带静默参数/S,但是静默参数不能选择自己想要的组件
搜狗输入法v12.5.0.6558去广告精简优化版.exe - 蓝奏云
https://423down.lanzouo.com/iWPHX0ckzxqh

2.我希望能可以静默安装上工具箱及扩展管理器组件,最好能支持w7-w11x86 x64全平台

au3应该没问题 我是想系统封装的时候调用的.


2025-12-20_20-16-44.jpg (28.15 KB, 下载次数: 2)

2025-12-20_20-16-44.jpg

作者: yyz2191958    时间: 昨天 20:26
支持折腾,祝福早日解决问题
作者: a66    时间: 昨天 20:30
等大佬...
作者: jlcc369    时间: 昨天 20:43
我用五笔,但支持折腾!
作者: chishingchan    时间: 昨天 21:24
给多少时间?Load.exe 类程序可以吗?
作者: smile_z    时间: 昨天 21:31
等高手
作者: 邪恶海盗    时间: 昨天 21:44
换低版本的,比如经典的6.7i不香么,还没那么多流氓...


二○二五年十二月二十日
作者: 1e3e    时间: 昨天 22:42
等高手
作者: 2012ccxbox    时间: 昨天 22:55
本帖最后由 2012ccxbox 于 2025-12-20 23:21 编辑
chishingchan 发表于 2025-12-20 21:24
给多少时间?Load.exe 类程序可以吗?

两个星期吧?所有方法都可以。。
作者: 2012ccxbox    时间: 昨天 22:56
邪恶海盗 发表于 2025-12-20 21:44
换低版本的,比如经典的6.7i不香么,还没那么多流氓...

6.7没手写 没语音。。
作者: RNM25728    时间: 昨天 23:17
坛里找 有的
作者: gordonhf    时间: 22 小时前
等高手
作者: vsvsvs    时间: 16 小时前
低版本确实是好选择
作者: PCHH    时间: 15 小时前
支持折腾
作者: xiaomiaom    时间: 13 小时前
找人重新封装一下输入法
作者: hhcha    时间: 13 小时前
等高手出作品!
作者: 9zhmke    时间: 12 小时前
一个思路是分析后重新打包,二是AU3隐藏界面再用鼠标键盘操作实现“静默”,不隐藏的话应该会更容易点。
作者: austere    时间: 11 小时前
9zhmke 发表于 2025-12-21 09:49
一个思路是分析后重新打包,二是AU3隐藏界面再用鼠标键盘操作实现“静默”,不隐藏的话应该会更容易点。

楼上回复是正解
作者: yyz2191958    时间: 11 小时前
18#的思路很好
作者: nttwqz    时间: 10 小时前
本帖最后由 nttwqz 于 2025-12-21 12:32 编辑

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



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



作者: nttwqz    时间: 10 小时前
本帖最后由 nttwqz 于 2025-12-21 12:32 编辑

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

搜狗拼音工具箱及扩展管理器组件源码.7z (202.24 KB, 下载次数: 15)
作者: guong    时间: 9 小时前
来看一下
作者: 神话再现    时间: 9 小时前
全是高手
作者: liuyang2025    时间: 8 小时前
论坛里面有,搜索下看看
作者: 孑然    时间: 8 小时前
等高手出作品!
作者: 好好学些    时间: 7 小时前
学习一下
作者: 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
复制代码

作者: 2012ccxbox    时间: 6 小时前
nttwqz 发表于 2025-12-21 12:12
NSIS源码在此,其它文件自行从原安装包中提取。


即使不是最佳答案,100论坛也会奉上感谢提供新的思路
作者: qq362817567    时间: 6 小时前
qq362817567 发表于 2025-12-21 15:21
你所说的静默安装是完全看不到安装界面还是仅仅自动化操作?

其实也还好,控件点击比坐标点击靠谱的多,窗口非激活状态应该也是能点到的。当然如果有大神直接给出静默包是最好了,期待。
作者: huangyi2008    时间: 6 小时前
qq362817567 发表于 2025-12-21 15:21
你所说的静默安装是完全看不到安装界面还是仅仅自动化操作?

这是个大神~

作者: likunrong    时间: 3 小时前
等高手




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3