找回密码
 加入
搜索
楼主: msold5

[AU3基础] [已解决]PrimoCache4.3安装过程RUN运行程序出错?

[复制链接]
发表于 2023-9-10 01:30:42 | 显示全部楼层
测试可用代码。
  1. #include <File.au3>
  2. #include <WinAPIError.au3>
  3. Global $Log = @ScriptDir & "\日志.log"
  4. Global $path = @ProgramFilesDir & "\PrimoCache"
  5. _drivers($path)

  6. Func _drivers($Dir)
  7.         $Pid = Run('"' & $Dir & "\fcsetup.exe" & '"' & ' -i ' & '"' & $Dir & "\drv\rxfcv.inf" & '"' & ' 257', $Dir, @SW_HIDE)
  8.         ProcessWaitClose($Pid)
  9.         $Handle = _ProcessExitCode($Pid)
  10.         $ExitCode = _ProcessExitCode($Pid, $Handle)
  11.         If $ExitCode <> 0 Then
  12.                 _FileWriteLog($Log, "驱动安装完成。 退出代码:" & $ExitCode & ":" & _WinAPI_GetErrorMessage($ExitCode))
  13.         Else
  14.                 _FileWriteLog($Log, "驱动安装完成")
  15.         EndIf
  16. EndFunc   ;==>_drivers

  17. Func _ProcessExitCode($i_Pid, $h_Process = 0)
  18.         Local $v_Placeholder
  19.         If Not IsArray($h_Process) Then
  20.                 $h_Process = DllCall('kernel32.dll', 'ptr', 'OpenProcess', 'int', 0x400, 'int', 0, 'int', $i_Pid)
  21.                 If Not @error Then Return $h_Process
  22.         Else
  23.                 $h_Process = DllCall('kernel32.dll', 'ptr', 'GetExitCodeProcess', 'ptr', $h_Process[0], 'int*', $v_Placeholder)
  24.                 If Not @error Then Return $h_Process[2]
  25.         EndIf
  26.         Return 0
  27. EndFunc   ;==>_ProcessExitCode
复制代码
发表于 2023-9-10 01:39:56 | 显示全部楼层
这软件可以脱离原版自己安装的。

  1. #AutoIt3Wrapper_UseX64=y
  2. #NoTrayIcon
  3. #include <File.au3>
  4. #include <WinAPIError.au3>
  5. Global $Log = @ScriptDir & "\日志.log"
  6. Global $path = @ProgramFilesDir & "\PrimoCache"
  7. If @OSBuild < 6001 Then Exit MsgBox(0, "错误", "不支持的操作系统.")
  8. _install($path)
  9. _TestCertificate($path & "\TestCertificate.cer")
  10. _drivers($path)
  11. _RegCache($path)
  12. _FileWriteLog($Log, "安装完毕")



  13. Func _install($Dir)
  14.         If Not FileExists($Dir) Then DirCreate($Dir)
  15.         If Not FileExists($Dir & "\drv") Then DirCreate($Dir & "\drv")
  16.         If Not FileExists($Dir & "\lang") Then DirCreate($Dir & "\lang")
  17.         FileInstall(".\Resources\FancyCcV.exe", $Dir & "\FancyCcV.exe", 1)
  18.         FileInstall(".\Resources\fcsetup.exe", $Dir & "\fcsetup.exe", 1)
  19.         FileInstall(".\Resources\rxpcc.exe", $Dir & "\rxpcc.exe", 1)
  20.         FileInstall(".\Resources\TestCertificate.cer", $Dir & "\TestCertificate.cer", 1)
  21.         FileInstall(".\Resources\unins000.exe", $Dir & "\unins000.exe", 1)
  22.         FileInstall(".\Resources\unins000.dat", $Dir & "\unins000.dat", 1)
  23.         FileInstall(".\Resources\pcc_chs.dll", $Dir & "\lang\pcc_chs.dll", 1)
  24.         Select
  25.                 Case @OSBuild >= 6001 And @OSBuild < 10240
  26.                         FileInstall(".\Resources\rxfcv,7.cat", $Dir & "\drv\rxfcv.cat", 1)
  27.                         FileInstall(".\Resources\rxfcv,7.inf", $Dir & "\drv\rxfcv.inf", 1)
  28.                         FileInstall(".\Resources\rxfcv,7.sys", $Dir & "\drv\rxfcv.sys", 1)
  29.                         FileInstall(".\Resources\rxbsknl,7.sys", @SystemDir & "\drivers\rxbsknl.sys", 1)
  30.                 Case @OSBuild >= 10240
  31.                         FileInstall(".\Resources\rxfcv,10.cat", $Dir & "\drv\rxfcv.cat", 1)
  32.                         FileInstall(".\Resources\rxfcv,10.inf", $Dir & "\drv\rxfcv.inf", 1)
  33.                         FileInstall(".\Resources\rxfcv,10.sys", $Dir & "\drv\rxfcv.sys", 1)
  34.                         FileInstall(".\Resources\rxbsknl,10.sys", @SystemDir & "\drivers\rxbsknl.sys", 1)
  35.                 Case Else
  36.         EndSelect
  37.         If Not FileExists(@StartMenuCommonDir & "\PrimoCache") Then DirCreate(@StartMenuCommonDir & "\PrimoCache")
  38.         FileCreateShortcut($Dir & "\FancyCcV.exe", @StartMenuCommonDir & "\PrimoCache\PrimoCache.lnk", $Dir)
  39.         FileCreateShortcut($Dir & "\unins000.exe", @StartMenuCommonDir & "\PrimoCache\卸载PrimoCache.lnk", $Dir)

  40. EndFunc   ;==>_install

  41. Func _drivers($Dir)
  42.         $Pid = Run('"' & $Dir & "\fcsetup.exe" & '"' & ' -i ' & '"' & $Dir & "\drv\rxfcv.inf" & '"' & ' 257', $Dir, @SW_HIDE)
  43.         ProcessWaitClose($Pid)
  44.         $Handle = _ProcessExitCode($Pid)
  45.         $ExitCode = _ProcessExitCode($Pid, $Handle)
  46.         If $ExitCode <> 0 Then
  47.                 _FileWriteLog($Log, "驱动安装完成。 退出代码:" & $ExitCode & ":" & _WinAPI_GetErrorMessage($ExitCode))
  48.         Else
  49.                 _FileWriteLog($Log, "驱动安装完成")
  50.         EndIf
  51. EndFunc   ;==>_drivers

  52. Func _TestCertificate($File)
  53.         If Not FileExists($File) Then Return False
  54.         RegRead("HKLM64\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\D39680ED59502209941759C74229F7E2FAC72749", "Blob")
  55.         If @error Then
  56.                 If FileExists(@SystemDir & "\certutil.exe") and FileExists($File) Then
  57.                         RunWait(@SystemDir & "\certutil.exe" & " -f -addstore Root " & '"' & $File & '"', @ScriptDir, @SW_HIDE)
  58.                         RunWait(@SystemDir & "\certutil.exe" & " -f -addstore TrustedPublisher " & '"' & $File & '"', @ScriptDir, @SW_HIDE)
  59.                         _FileWriteLog($Log, "添加驱动证书")
  60.                         FileDelete($File)
  61.                 Else
  62.                         FileDelete($File)
  63.                         Return False
  64.                 EndIf
  65.         Else
  66.                 _FileWriteLog($Log, "驱动证书已存在")
  67.                 FileDelete($File)
  68.         EndIf
  69.         Return True
  70. EndFunc   ;==>_TestCertificate

  71. Func _RegCache($Dir)
  72.         Local $iRegWrite, $Data, $Uninstall
  73.         $Uninstall = "HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{7A37EA43-BF6F-4DB7-83DB-97AA19BF9408}_is1"
  74.         RegWrite("HKLM64\SOFTWARE\Romex Software\FancyCcV", "Version", "REG_DWORD", 67305472)
  75.         RegWrite("HKLM64\SOFTWARE\Romex Software\FancyCcV", "Multilingual", "REG_SZ", "mui")
  76.         RegWrite("HKLM64\SOFTWARE\Romex Software\FancyCcV", "PrefetchPath", "REG_SZ", "\DosDevices" & $Dir & "\prefetch")
  77.         RegWrite("HKCU64\SOFTWARE\Romex Software\PrimoCache", "LanguageId", "REG_DWORD", 2052)

  78.         RegWrite($Uninstall, "DisplayName", "REG_SZ", "PrimoCache 4.3.0")
  79.         RegWrite($Uninstall, "DisplayVersion", "REG_SZ", "4.3.0")
  80.         RegWrite($Uninstall, "UninstallString", "REG_SZ", $Dir & "\unins000.exe")
  81.         RegWrite($Uninstall, "DisplayIcon", "REG_SZ", $Dir & "\FancyCcV.exe")
  82.         RegWrite($Uninstall, "InstallLocation", "REG_SZ", $Dir & "")
  83.         RegWrite($Uninstall, "Publisher", "REG_SZ", "Romex Software")
  84.         RegWrite($Uninstall, "URLInfoAbout", "REG_SZ", "http://www.romexsoftware.com/")
  85.         RegWrite($Uninstall, "NoModify", "REG_DWORD", 1)
  86.         RegWrite($Uninstall, "NoRepair", "REG_DWORD", 1)
  87.         RegWrite($Uninstall, "InstallDate", "REG_SZ", @YEAR & @MON & @MDAY)
  88.         RegWrite($Uninstall, "EstimatedSize", "REG_DWORD", DirGetSize($Dir) / 1000)

  89.         RegWrite("HKLM64\SYSTEM\CurrentControlSet\Services\FancyCcV\Parameters", "Scode", "REG_BINARY", Binary("0x5461dce9066ead46b4fb4d1b2cc61c6f"))
  90.         $Data = "0xB800000055EAC6F98FECF94466FF7C07" & _
  91.                         "07075BB7A8F7700FE09E0AA48C81C369" & _
  92.                         "580C83A26E217A8EF08E1A94BCB1F399" & _
  93.                         "281C73B25E114A7E2B7B28616E23E0B0" & _
  94.                         "C231D0F8D16FD3C6B8DDEC122FF6057D" & _
  95.                         "9E95E754A3F8CA261AEC6E7841899990" & _
  96.                         "D1BEA09F2CB41E72672C98FD5690E585" & _
  97.                         "2619AECBF177C5C88A2B8CAECA3EE093" & _
  98.                         "2F1DAEC82B3ADF1E7EDF43AFBF9C7090" & _
  99.                         "0A2D5B9CA45B172E0FF6F77AAA1B704C" & _
  100.                         "D0C48096B7E8674F9BE9416EAEB7547B" & _
  101.                         "1B417F848265302A"
  102.         $iRegWrite = RegWrite("HKLM64\SYSTEM\CurrentControlSet\Services\FancyCcV\Parameters", "Data3", "REG_BINARY", Binary($Data))
  103.         If $iRegWrite = False Then
  104.                 _FileWriteLog($Log, "添加激活信息失败")
  105.                 Return False
  106.         Else
  107.                 _FileWriteLog($Log, "添加激活信息成功")
  108.                 Return True
  109.         EndIf
  110. EndFunc   ;==>_RegCache

  111. Func _GetVer()
  112.         Select
  113.                 Case @OSBuild >= 6001 And @OSBuild < 10240
  114.                         Return "win7"
  115.                 Case @OSBuild >= 10240
  116.                         Return "win10"
  117.                 Case Else
  118.                         Return
  119.         EndSelect
  120. EndFunc   ;==>_GetVer

  121. Func _ProcessExitCode($i_Pid, $h_Process = 0)
  122.         Local $v_Placeholder
  123.         If Not IsArray($h_Process) Then
  124.                 $h_Process = DllCall('kernel32.dll', 'ptr', 'OpenProcess', 'int', 0x400, 'int', 0, 'int', $i_Pid)
  125.                 If Not @error Then Return $h_Process
  126.         Else
  127.                 $h_Process = DllCall('kernel32.dll', 'ptr', 'GetExitCodeProcess', 'ptr', $h_Process[0], 'int*', $v_Placeholder)
  128.                 If Not @error Then Return $h_Process[2]
  129.         EndIf
  130.         Return 0
  131. EndFunc   ;==>_ProcessExitCode
复制代码

评分

参与人数 1金钱 +150 收起 理由
msold5 + 150 请指点:https://www.autoitx.com/thread-7 ...

查看全部评分

 楼主| 发表于 2023-9-10 10:15:27 | 显示全部楼层
gyp2000 发表于 2023-9-10 01:39
这软件可以脱离原版自己安装的。

越来越完善了,厉害!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-9-28 03:41 , Processed in 0.049491 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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