From 58f026f30fbbb3966d115076af1582fbb3a0d637 Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Fri, 5 Dec 2025 22:46:17 -0400 Subject: [PATCH] install software and make configurations --- assets/keepassxc/keepassxc.ini | 15 ++ assets/openoffice/historymanager2.1.oxt | Bin 0 -> 23259 bytes assets/openoffice/registrymodifications.xcu | 274 ++++++++++++++++++++ assets/veracrypt/Configuration.xml | 59 +++++ assets/vlc/vlcrc | 10 + config/adobe_acrobat.reg | 4 + config/apps.json | 104 ++++++++ config/chrome.reg | 49 ++++ config/vlc.reg | 4 + install.bat | 26 ++ lib/invoke-cmdexec.ps1 | 54 ++++ lib/invoke-filecopy.ps1 | 41 +++ lib/invoke-regimport.ps1 | 37 +++ main.ps1 | 119 +++++++++ 14 files changed, 796 insertions(+) create mode 100644 assets/keepassxc/keepassxc.ini create mode 100644 assets/openoffice/historymanager2.1.oxt create mode 100644 assets/openoffice/registrymodifications.xcu create mode 100644 assets/veracrypt/Configuration.xml create mode 100644 assets/vlc/vlcrc create mode 100644 config/adobe_acrobat.reg create mode 100644 config/apps.json create mode 100644 config/chrome.reg create mode 100644 config/vlc.reg create mode 100644 install.bat create mode 100644 lib/invoke-cmdexec.ps1 create mode 100644 lib/invoke-filecopy.ps1 create mode 100644 lib/invoke-regimport.ps1 create mode 100644 main.ps1 diff --git a/assets/keepassxc/keepassxc.ini b/assets/keepassxc/keepassxc.ini new file mode 100644 index 0000000..1d05a54 --- /dev/null +++ b/assets/keepassxc/keepassxc.ini @@ -0,0 +1,15 @@ +[General] +ConfigVersion=1 +UpdateCheckMessageShown=true +RememberLastDatabases=false +RememberLastKeyFiles=false +OpenPreviousDatabasesOnStartup=false + +[GUI] +CheckForUpdates=false +TrayIconAppearance=monochrome + +[Security] +ClearClipboardTimeout=30 +LockDatabaseIdle=true +LockDatabaseIdleSeconds=600 diff --git a/assets/openoffice/historymanager2.1.oxt b/assets/openoffice/historymanager2.1.oxt new file mode 100644 index 0000000000000000000000000000000000000000..6bdb720855186522ee3780647cd515d35651dee9 GIT binary patch literal 23259 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 literal 0 HcmV?d00001 diff --git a/assets/openoffice/registrymodifications.xcu b/assets/openoffice/registrymodifications.xcu new file mode 100644 index 0000000..9f01d8c --- /dev/null +++ b/assets/openoffice/registrymodifications.xcu @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + zh-CN + + + + + true + + + + + 190,213,1424,714;1;0,0,0,0; + + + + + true + + + + + 4116m3(Build:9816) + + + + + 0 + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + + + + + true + + + + + 0 + + + + + auto + + + + + 1 + + + + + true + + + + + false + + + + + false + + + + + true + + + + + false + + + + + true + + + + + false + + + + + true + + + + + 2 + + + + + true + + + + + 1 + + + + + + + + + + false + + + + + true + + + + + false + + + + + false + + + + + false + + + + + + + 565,335,,;;,,,; + + + + \ No newline at end of file diff --git a/assets/veracrypt/Configuration.xml b/assets/veracrypt/Configuration.xml new file mode 100644 index 0000000..0159167 --- /dev/null +++ b/assets/veracrypt/Configuration.xml @@ -0,0 +1,59 @@ + + + + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + -60 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + zh-cn + + 1 + + \ No newline at end of file diff --git a/assets/vlc/vlcrc b/assets/vlc/vlcrc new file mode 100644 index 0000000..97cfed0 --- /dev/null +++ b/assets/vlc/vlcrc @@ -0,0 +1,10 @@ +[qt] # Qt interface +qt-recentplay=0 +qt-privacy-ask=0 +qt-updates-notif=0 + +[core] # core program +video-title-show=0 +vout=any +repeat=1 +metadata-network-access=0 diff --git a/config/adobe_acrobat.reg b/config/adobe_acrobat.reg new file mode 100644 index 0000000..1b775a9 --- /dev/null +++ b/config/adobe_acrobat.reg @@ -0,0 +1,4 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat\DC\AVGeneral] +"iMaxMRUCntToBeStored"=dword:00000000 diff --git a/config/apps.json b/config/apps.json new file mode 100644 index 0000000..68fd128 --- /dev/null +++ b/config/apps.json @@ -0,0 +1,104 @@ +[ + { + "Name": "7-Zip", + "Id": "7zip.7zip", + "Version": "", + "PostInstall": [ + { + "Type": "Command", + "Command": "del /f /q \"C:\\Program Files\\7-Zip\\7-zip.chm\"", + "Description": "Remove 7-zip.chm file" + } + ] + }, + { + "Name": "Google Chrome", + "Id": "Google.Chrome", + "Version": "", + "PostInstall": [ + { + "Type": "RegImport", + "Path": "./config/chrome.reg" + } + ] + }, + { + "Name": "OpenOffice", + "Id": "Apache.OpenOffice", + "Version": "4.116.9816", + "PostInstall": [ + { + "Type": "Command", + "Command": "\"C:\\Program Files (x86)\\OpenOffice 4\\program\\soffice.exe\" -headless -nologo -nodefault", + "Description": "Run software once to generate the configuration files" + }, + { + "Type": "FileCopy", + "Source": "./assets/openoffice/registrymodifications.xcu", + "Destination": "$env:APPDATA\\OpenOffice\\4\\user\\registrymodifications.xcu" + }, + { + "Type": "Command", + "Command": "echo y | \"C:\\Program Files (x86)\\OpenOffice 4\\program\\unopkg.com\" add --shared -s \"$PSScriptRoot\\assets\\openoffice\\historymanager2.1.oxt\"", + "Description": "Install history extension" + } + ] + }, + { + "Name": "KeePassXC", + "Id": "KeePassXCTeam.KeePassXC", + "Version": "2.6.6", + "PostInstall": [ + { + "Type": "FileCopy", + "Source": "./assets/keepassxc/keepassxc.ini", + "Destination": "$env:APPDATA\\KeePassXC\\keepassxc.ini" + } + ] + }, + { + "Name": "VeraCrypt", + "Id": "IDRIX.VeraCrypt", + "Version": "1.26.20", + "PostInstall": [ + { + "Type": "FileCopy", + "Source": "./assets/veracrypt/Configuration.xml", + "Destination": "$env:APPDATA\\VeraCrypt\\Configuration.xml" + } + ] + }, + { + "Name": "File Shredder", + "Id": "PowTools.FileShredder", + "Version": "", + "PostInstall": [] + }, + { + "Name": "VLC", + "Id": "VideoLAN.VLC", + "Version": "", + "PostInstall": [ + { + "Type": "FileCopy", + "Source": "./assets/vlc/vlcrc", + "Destination": "$env:APPDATA\\vlc\\vlcrc" + }, + { + "Type": "RegImport", + "Path": "./config/vlc.reg" + } + ] + }, + { + "Name": "Adobe Acrobat Reader", + "Id": "Adobe.Acrobat.Reader.64-bit", + "Version": "", + "PostInstall": [ + { + "Type": "RegImport", + "Path": "./config/adobe_acrobat.reg" + } + ] + } +] \ No newline at end of file diff --git a/config/chrome.reg b/config/chrome.reg new file mode 100644 index 0000000..69f5f80 --- /dev/null +++ b/config/chrome.reg @@ -0,0 +1,49 @@ +Windows Registry Editor Version 5.00 + +;uBlock Origin Lite +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionSettings\ddkjiahejlhfcafbddmgiahcphecmpfh] +"installation_mode"="normal_installed" +"update_url"="https://clients2.google.com/service/update2/crx" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\Recommended] +"AutofillAddressEnabled"=dword:00000000 +"AutofillCreditCardEnabled"=dword:00000000 +"DefaultGeolocationSetting"=dword:00000002 +"PasswordManagerEnabled"=dword:00000000 +"PaymentMethodQueryEnabled"=dword:00000000 +"PrivacySandboxAdMeasurementEnabled"=dword:00000000 +"PrivacySandboxAdTopicsEnabled"=dword:00000000 +"PrivacySandboxPromptEnabled"=dword:00000000 +"PrivacySandboxSiteEnabledAdsEnabled"=dword:00000000 + +; Microsoft Edge (Bonus ;) +;uBlock Origin +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\ExtensionSettings\odfafepnkmbhccpbejgmiehpchacaeak] +"installation_mode"="normal_installed" +"update_url"="https://edge.microsoft.com/extensionwebstorebase/v1/crx" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\Recommended] +"AlternateErrorPagesEnabled"=dword:00000000 +"AutofillAddressEnabled"=dword:00000000 +"AutofillCreditCardEnabled"=dword:00000000 +"AutofillMembershipsEnabled"=dword:00000000 +"ConfigureDoNotTrack"=dword:00000001 +"ControlDefaultStateOfAllowExtensionFromOtherStoresSettingEnabled"=dword:00000001 +"DefaultGeolocationSetting"=dword:00000002 +"DiagnosticData"=dword:00000001 +"EdgeShoppingAssistantEnabled"=dword:00000000 +"EdgeWalletCheckoutEnabled"=dword:00000000 +"PasswordManagerEnabled"=dword:00000000 +"PaymentMethodQueryEnabled"=dword:00000000 +"PersonalizationReportingEnabled"=dword:00000000 +"PrimaryPasswordSetting"=dword:00000003 +"RelatedMatchesCloudServiceEnabled"=dword:00000000 +"ResolveNavigationErrorsUseWebService"=dword:00000000 +"ShowMicrosoftRewards"=dword:00000000 +"TabServicesEnabled"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\Recommended\ManagedSearchEngines\1] +"is_default"=dword:00000001 +"keyword"="google.com" +"name"="Google" +"search_url"="{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchboxStats}{google:searchFieldtrialParameter}{google:iOSSearchLanguage}{google:prefetchSource}{google:searchClient}{google:sourceId}{google:contextualSearchVersion}ie={inputEncoding}" diff --git a/config/vlc.reg b/config/vlc.reg new file mode 100644 index 0000000..7a74ede --- /dev/null +++ b/config/vlc.reg @@ -0,0 +1,4 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\VideoLAN\VLC] +"Lang"="zh_CN" diff --git a/install.bat b/install.bat new file mode 100644 index 0000000..6b99e98 --- /dev/null +++ b/install.bat @@ -0,0 +1,26 @@ +@echo off +:: ========================================== +:: 自动化装机工具启动器 +:: ========================================== + +:: 1. 强制切换到当前批处理文件所在的目录 +:: 这一步至关重要,防止以管理员身份运行时路径变成了 C:\Windows\System32 +cd /d "%~dp0" + +:: 2. 检查管理员权限 +if not "%1" == "am_admin" ( + rem you'd better keep the following line as it is. + powershell start -verb runas '%0' am_admin & exit /b +) + +:: ========================================== +:: 3. 核心执行逻辑 +:: ========================================== + +echo Calling main.ps1... + +:: -NoProfile: 不加载用户配置文件,加快启动速度 +:: -ExecutionPolicy Bypass: 绕过默认的脚本执行策略限制 +:: -File: 指定要运行的脚本文件 + +powershell.exe -NoExit -NoProfile -ExecutionPolicy Bypass -File ".\main.ps1" diff --git a/lib/invoke-cmdexec.ps1 b/lib/invoke-cmdexec.ps1 new file mode 100644 index 0000000..df7a41e --- /dev/null +++ b/lib/invoke-cmdexec.ps1 @@ -0,0 +1,54 @@ +param( + [Parameter(Mandatory=$true)] [string]$Command, + [string]$WorkDir = $null +) + +# 1. 处理工作目录 +if ([string]::IsNullOrEmpty($WorkDir)) { + $WorkDir = $PSScriptRoot +} else { + # 如果 WorkDir 里包含变量(如 $env:APPDATA),展开它 + $WorkDir = $ExecutionContext.InvokeCommand.ExpandString($WorkDir) +} + +# 确保目录存在,否则命令会报错 +if (-not (Test-Path $WorkDir)) { + Write-Warning "`n[CMD] WARNING: The work dir does not exist, using ($WorkDir)" + $WorkDir = $PSScriptRoot +} + +# 2. 处理命令中的环境变量 +$ProjectRoot = Split-Path $PSScriptRoot -Parent +# === 替换 $PSScriptRoot 为实际的绝对路径 === +# 注意:要处理反斜杠转义问题,直接用字符串替换最安全 +if ($Command.Contains('$PSScriptRoot')) { + $Command = $Command.Replace('$PSScriptRoot', $ProjectRoot) +} + +# 这一步很关键,让你可以写 "echo $env:USERNAME" +$Command = $ExecutionContext.InvokeCommand.ExpandString($Command) + +Write-Host "`n[CMD] Execute: $Command" -ForegroundColor Gray + +# 3. 启动进程 +# /c 表示执行完命令后关闭 cmd 窗口 +# /s 开启参数的一般处理(忽略第一个和最后一个引号,为了兼容复杂引号情况) +$processOptions = @{ + FilePath = "cmd.exe" + ArgumentList = "/s", "/c", "`"$Command`"" + WorkingDirectory = $WorkDir + Wait = $true + NoNewWindow = $true + PassThru = $true +} + +try { + $proc = Start-Process @processOptions + + # 4. 检查退出代码 (ExitCode) + if ($proc.ExitCode -ne 0) { + Write-Error "`n[CMD] Failed to execute, exit code: $($proc.ExitCode)" + } +} catch { + Write-Error "`n[CMD] Failed to start process: $_" +} \ No newline at end of file diff --git a/lib/invoke-filecopy.ps1 b/lib/invoke-filecopy.ps1 new file mode 100644 index 0000000..fe202f4 --- /dev/null +++ b/lib/invoke-filecopy.ps1 @@ -0,0 +1,41 @@ +param( + [Parameter(Mandatory=$true)] + [string]$Source, + + [Parameter(Mandatory=$true)] + [string]$Destination +) + +try { + # 1. 路径预处理:展开环境变量 (例如把 $env:APPDATA 变成 C:\Users\...\AppData\Roaming) + $ResolvedSource = $ExecutionContext.InvokeCommand.ExpandString($Source) + $ResolvedDest = $ExecutionContext.InvokeCommand.ExpandString($Destination) + + # 2. 处理相对路径 (针对源文件) + # 如果源路径是相对路径 (./assets/...), 尝试将其转换为绝对路径 + # 假设脚本是从项目根目录调用的 + if (-not (Test-Path $ResolvedSource) -and (Test-Path "$PWD\$ResolvedSource")) { + $ResolvedSource = Join-Path $PWD $ResolvedSource + } + + # 3. 再次检查源文件是否存在 + if (-not (Test-Path $ResolvedSource -PathType Leaf)) { + Write-Warning "`n[FileCopy] [Skip] File not found: $ResolvedSource" + return # 退出脚本 + } + + # 4. 处理目标目录 (自动创建不存在的文件夹) + $DestDir = Split-Path -Path $ResolvedDest -Parent + if (-not (Test-Path $DestDir)) { + Write-Host "`n[FileCopy] Create dir: $DestDir" -ForegroundColor DarkGray + New-Item -Path $DestDir -ItemType Directory -Force | Out-Null + } + + # 5. 执行复制 (Force = 覆盖) + Copy-Item -Path $ResolvedSource -Destination $ResolvedDest -Force -ErrorAction Stop + + Write-Host "`n[FileCopy] Success: $ResolvedDest" -ForegroundColor Green + +} catch { + Write-Error "`n[FileCopy] Fail: $_" +} \ No newline at end of file diff --git a/lib/invoke-regimport.ps1 b/lib/invoke-regimport.ps1 new file mode 100644 index 0000000..a3d1eeb --- /dev/null +++ b/lib/invoke-regimport.ps1 @@ -0,0 +1,37 @@ +param( + [Parameter(Mandatory=$true)] + [string]$Path +) + +try { + # 1. 路径预处理 + # 展开环境变量 (虽然 .reg 路径通常是固定的,但支持一下没坏处) + $ResolvedPath = $ExecutionContext.InvokeCommand.ExpandString($Path) + + # 2. 处理相对路径 + # 如果路径是相对的 (./assets/...), 转换为绝对路径 + if (-not (Test-Path $ResolvedPath) -and (Test-Path "$PWD\$ResolvedPath")) { + $ResolvedPath = Join-Path $PWD $ResolvedPath + } + + # 3. 检查文件是否存在 + if (-not (Test-Path $ResolvedPath)) { + Write-Warning "`n[RegImport] [Skip] Cannot find: $ResolvedPath" + return + } + + Write-Host "`n[RegImport] Importing: $(Split-Path $ResolvedPath -Leaf)" -ForegroundColor Gray + + # 4. 调用 reg.exe 导入 + # 使用 Start-Process 以获取退出代码 + $proc = Start-Process -FilePath "reg.exe" -ArgumentList "import", "`"$ResolvedPath`"" -Wait -PassThru -NoNewWindow + + if ($proc.ExitCode -eq 0) { + Write-Host "`n[RegImport] Successfully imported." -ForegroundColor Green + } else { + Write-Error "`n[RegImport] Failed to import: $($proc.ExitCode)" + } + +} catch { + Write-Error "`n[RegImport] Failed to start process: $_" +} \ No newline at end of file diff --git a/main.ps1 b/main.ps1 new file mode 100644 index 0000000..e158c44 --- /dev/null +++ b/main.ps1 @@ -0,0 +1,119 @@ +# 设置严格模式,遇到错误停止,防止错误的命令雪崩 +$ErrorActionPreference = "Stop" +#Set-StrictMode -Version Latest + +# === 1. 加载依赖库 === +# 确保 lib 目录存在 +if (-not (Test-Path "$PSScriptRoot\lib")) { + Write-Error "Cannot find ./lib, some files missing." + exit 1 +} + +# === 2. 读取配置 === +$jsonPath = "$PSScriptRoot\config\apps.json" +if (-not (Test-Path $jsonPath)) { + Write-Error "Cannot find: $jsonPath" + exit 1 +} + +Write-Host "Reading configurations..." -ForegroundColor Cyan +# 使用 UTF8 读取防止中文乱码 +$apps = Get-Content $jsonPath -Encoding UTF8 | ConvertFrom-Json + +# === 3. 主循环 === +foreach ($app in $apps) { + Write-Host "`n==========================================" -ForegroundColor Cyan + Write-Host "Installing: $($app.Name)" -ForegroundColor Yellow + Write-Host "==========================================" + + # --- 步骤 A: Winget 安装 --- + $wingetArgs = @( + "install", + "--id", $app.Id, + "-e", + "--silent", + "--accept-package-agreements", + "--accept-source-agreements", + "--disable-interactivity", + "--scope", "machine" + ) + + # [版本检查逻辑] + # 检查 Version 是否存在且不为空字符串 + if (-not [string]::IsNullOrWhiteSpace($app.Version)) { + Write-Host "-> Version: $($app.Version)" + $wingetArgs += "-v" + $wingetArgs += $app.Version + } else { + Write-Host "-> Version: latest" + } + + Write-Host "-> Installing via winget..." + + # 执行安装 + $proc = Start-Process -FilePath "winget" -ArgumentList $wingetArgs -Wait -PassThru -NoNewWindow + + # 检查安装结果 (0=成功, -1978335189=已安装) + if ($proc.ExitCode -eq 0) { + Write-Host "[Success]" -ForegroundColor Green + } elseif ($proc.ExitCode -eq -1978335189) { + Write-Host "[Skip] Already installed" -ForegroundColor Yellow + continue # 已经安装的为了避免覆盖配置,也就不配置了 + } else { + Write-Error "[Fail] Error code: $($proc.ExitCode)" + continue # 安装失败则跳过后续配置 + } + + # --- 步骤 B: PostInstall 配置 --- + if ($app.PostInstall -and $app.PostInstall.Count -gt 0) { + Write-Host "`n-> Configuring..." -ForegroundColor Cyan + + $stepIndex = 0 + foreach ($action in $app.PostInstall) { + + # [间隔逻辑] 如果这不是第一步,先等待 2 秒 + if ($stepIndex -gt 0) { + Write-Host "(Waiting 2 seconds...)" -ForegroundColor DarkGray + Start-Sleep -Seconds 2 + } + + try { + switch ($action.Type) { + + # 1. 复制文件 + "FileCopy" { + & "$PSScriptRoot\lib\invoke-filecopy.ps1" ` + -Source $action.Source ` + -Destination $action.Destination + } + + # 2. 导入注册表 + "RegImport" { + & "$PSScriptRoot\lib\invoke-regimport.ps1" ` + -Path $action.Path + } + + # 3. 执行 CMD + "Command" { + & "$PSScriptRoot\lib\invoke-cmdexec.ps1" ` + -Command $action.Command ` + -WorkDir $action.WorkDir + } + + Default { + Write-Warning "`nUnknown action: $($action.Type)" + } + } + } catch { + Write-Error "`nFailed to operate step $($stepIndex + 1): $_" + } + + $stepIndex++ + } + } else { + Write-Host "-> No configurations." -ForegroundColor DarkGray + } +} + +Write-Host "`n=== Done ===" -ForegroundColor Green +Pause