跳至内容

运行 O&O ShutUp10++(隐私工具)

本页由 tools/devdocs-generator.ps1 生成,请修改源配置或函数后重新生成。目录保留历史 URL,实际分类以本页为准。

  • 稳定 ID:WPFOOSUbutton
  • 当前分类:z__高级优化 - 谨慎
  • 源配置:config/tweaks.json
  • 源配置 SHA-256:09ebd3bfcdbb4a45f67506a5c926f7f468d1da38a2a95e8accaa0d9f7e062fa9

本页描述实现,不代表推荐勾选。历史恢复仅覆盖工具实际记录的设置;配置中的 OriginalValue / OriginalType 不等于这台电脑的修改前状态。应用、文件及脚本其他改动不保证可恢复。

配置定义

{
  "WPFOOSUbutton": {
    "Content": "运行 O&O ShutUp10++(隐私工具)",
    "category": "z__高级优化 - 谨慎",
    "panel": "1",
    "Type": "Button",
    "link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/oosubutton"
  }
}

入口函数

来源:functions/public/Invoke-WPFOOSU.ps1。这里只展示入口,其他被调用函数以仓库源码为准。

function Invoke-WPFOOSU {
    if ($sync.OOSURunning) {
        Write-Warning 'O&O ShutUp10++ 正在准备或运行,请先关闭已打开的工具。'
        return
    }

    # Reserve before the modal dialog as it can process another button click.
    $sync.OOSURunning = $true
    try {
        $message = @'
将从 O&O 官方下载域名 dl5.oo-software.com 获取 ShutUp10++,验证有效数字签名及 O&O Software GmbH 发布者后,以当前管理员权限打开。

WinUtil 不会自动选择或应用 O&O 设置。请在第三方工具中了解影响后自行选择;其中改动无法通过 WinUtil 的操作历史恢复。

关闭 O&O 后会清理本次下载的临时文件。是否继续下载并打开?
'@
        if (-not (Show-WinUtilTweakDialog -Title '下载并打开 O&O ShutUp10++' -Message $message -Confirm)) {
            $sync.OOSURunning = $false
            return
        }
    } catch {
        $sync.OOSURunning = $false
        Write-Warning "无法确认 O&O ShutUp10++ 操作,尚未开始下载。$($_.Exception.Message)"
        return
    }

    # Create the delegate on the UI runspace; workers pass an immutable error snapshot.
    $sync.OOSUErrorAction = [action[string]] {
        param($Message)
        $null = Show-WinUtilTweakDialog -Title 'O&O ShutUp10++ 启动失败' -Message $Message
    }
    try {
        $null = Invoke-WPFRunspace -ErrorAction Stop -ScriptBlock {
            try {
                Write-Host '正在下载并验证 O&O ShutUp10++;验证通过后将打开工具。'
                $null = Invoke-WinUtilVerifiedTool -Tool OOSU -ErrorAction Stop
            } catch {
                $message = "O&O ShutUp10++ 未成功完成。`r`n$($_.Exception.Message)"
                Write-Warning $message
                if ($sync.Form) {
                    try {
                        # Do not make a worker wait for a dialog or a closing UI thread.
                        $null = $sync.Form.Dispatcher.BeginInvoke(
                            [action[string]]$sync.OOSUErrorAction, [object[]]@($message)
                        )
                    } catch {
                        Write-Warning "无法显示 O&O 错误窗口:$($_.Exception.Message)"
                    }
                }
            } finally {
                $sync.OOSURunning = $false
            }
        }
    } catch {
        $sync.OOSURunning = $false
        $message = "无法启动 O&O ShutUp10++ 后台任务。`r`n$($_.Exception.Message)"
        Write-Warning $message
        if ($sync.Form) {
            $null = Show-WinUtilTweakDialog -Title 'O&O ShutUp10++ 启动失败' -Message $message
        }
    }
}