当前位置: 首页 > news >正文

国内用户快速部署Scoop@一键加速安装scoop@Deploy-ScoopForCNUser

abstract

  • 适合中国用户一键部署加速过的scoop包管理器:scoop-cn/Deploy-ScoopForCNUser at master · xuchaoxin1375/scoop-cn (github.com)
  • 脚本参考了多个相关的项目,做了整合,相关参考链接放到函数文档中

脚本说明

  • 以下脚本对原脚本的扩展和改进,提供更多的灵活性和安装方案,以及更加详细的注释
  • 对于某些精简版或修改版系统默认将用户权限提到Administrator的情况提供安装支持选项

下载或安装脚本

  • 下载或者安装下面的脚本,然后用powershell执行(导入)
  • 当然,您也可以直接复制下面的代码,然后粘贴到powershell中(推荐powershell v7+)
function Get-AvailableGithubMirrors
{<# 
.SYNOPSIS
列出流行的或可能可用的github加速镜像站
列表中的镜像站可能会过期,可用性不做稳定性和可用性保证.DESCRIPTION
推荐使用aria2等多线程下载工具来加速下载,让镜像加速效果更加明显#>[CmdletBinding()]param([switch]$ListView,[switch]$PassThru)$m1 = 'https://mirror.ghproxy.com'$m2 = 'https://ghproxy.cc'$m3 = 'https://github.moeyy.xyz/'$m4 = 'https://ghproxy.net/'$m5 = 'https://gh.ddlc.top/'Write-Host 'Available mirrors:'$mirrors = @($m1, $m2, $m3, $m4, $m5) $s = { $mirrors | ForEach-Object { $i = [array]::IndexOf($mirrors, $_)Write-Host " ${i}: $_"}}$s.Invoke()if ($PassThru){return $mirrors}}function Deploy-ScoopByGithubMirrors
{[CmdletBinding()]param ([switch]$InstallBasicSoftwares,$ScriptsDirectory = "$home/Downloads")$mirrors = Get-AvailableGithubMirrors -PassThru$numOfMirrors = $mirrors.Count$range = "[0~$($numOfMirrors-1)]"$num = Read-Host -Prompt "Select the number of the mirror you want to use $range ?(default: 0)"if (!$num){Write-Host 'choose the Default 0'}elseif ( !($num -as [int])){Write-Error " Input a number within the range! $range"}$mirror = $mirrors[$num]## 加速下载scoop原生安装脚本$script = (Invoke-RestMethod $mirror/https://raw.githubusercontent.com/scoopinstaller/install/master/install.ps1)$installer = "$ScriptsDirectory/scoop_installer.ps1"$installer_cn = "$ScriptsDirectory/scoop_cn_installer.ps1"# 利用字符串的Replace方法,将 https://github.com 替换为 $mirror/https://github.com加速$script> $installer$script.Replace('https://github.com', "$mirror/https://github.com") > $installer_cn# 根据scoopd官方文档,管理员(权限)安装scoop时需要添加参数 -RunAsAdmin参数,否则会无法安装# 或者你可以直接将上述代码下载下来的家目录scoop_installer_cn文件中的相关代码片段注释掉(Deny-Install 调用语句注释掉)$r = Read-Host -Prompt 'Install scoop as Administrator Privilege? [Y/n]'if ($r){#必要时请手动打开管理员权限的powershell,然后运行此脚本Invoke-Expression "& $installer_cn -RunAsAdmin"}else{Invoke-Expression "& $installer_cn"}# 将 Scoop 的仓库源替换为代理的scoop config scoop_repo $mirror/https://github.com/ScoopInstaller/ScoopNew-Item -ItemType 'directory' -Path "$env:USERPROFILE\scoop\buckets\scoop-cn\bucket"# 可选部分## 如果没有安装 Git等常用工具,可以解开下面的注释## 先下载几个必需的软件的 JSON,组成一个临时的应用仓库if ($InstallBasicSoftwares){New-Item -ItemType 'directory' -Path "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\7-zip"New-Item -ItemType 'directory' -Path "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\git"# 7zip软件资源Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/bucket/7zip.json -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\bucket\7zip.json"#注册7-zip的右键菜单等操作Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/7-zip/install-context.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\7-zip\install-context.reg"Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/7-zip/uninstall-context.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\7-zip\uninstall-context.reg"# git软件资源Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/bucket/git.json -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\bucket\git.json"#注册git右键菜单等操作Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/git/install-context.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\git\install-context.reg"Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/git/uninstall-context.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\git\uninstall-context.reg"Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/git/install-file-associations.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\git\install-file-associations.reg"Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/scripts/git/uninstall-file-associations.reg -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\scripts\git\uninstall-file-associations.reg"#注册aria2Invoke-RestMethod -Uri $mirror/https://raw.githubusercontent.com/duzyn/scoop-cn/master/bucket/aria2.json -OutFile "$env:USERPROFILE\scoop\buckets\scoop-cn\bucket\aria2.json"# 安装时注意顺序是 7-Zip, Git, Aria2scoop install scoop-cn/7zipscoop install scoop-cn/gitscoop install scoop-cn/aria2# 推荐使用aria2,设置多路下载scoop config aria2-split 16}# 将 Scoop 的 main 仓库源替换为代理加速过的if (Test-Path -Path "$env:USERPROFILE\scoop\buckets\main"){# 先移除默认的源,然后添加同名bucket和加速后的源scoop bucket rm main}Write-Host 'Adding speedup main bucket...'+" powered by: [$mirror]"scoop bucket add main $mirror/https://github.com/ScoopInstaller/Main# 之前的scoop-cn 库是临时的,还不是来自Git拉取的完整库,删掉后,重新添加 Git 仓库Write-Host 'remove Temporary scoop-cn bucket...'if (Test-Path -Path "$env:USERPROFILE\scoop\buckets\scoop-cn"){scoop bucket rm scoop-cn}Write-Host 'Adding scoop-cn bucket (from git repository)...'scoop bucket add scoop-cn $mirror/https://github.com/duzyn/scoop-cn# Set-Location "$env:USERPROFILE\scoop\buckets\scoop-cn"# git config pull.rebase trueWrite-Host 'scoop and scoop-cn was installed successfully!'}
function Deploy-ScoopByGitee
{param ()# 脚本执行策略更改Set-ExecutionPolicy -ExecutionPolicy bypass -Scope CurrentUser#如果询问, 输入Y或A,同意# 执行安装命令(默认安装在用户目录下,如需更改请执行“自定义安装目录”命令)Invoke-WebRequest -useb scoop.201704.xyz | Invoke-Expression## 自定义安装目录(注意将目录修改为合适位置)# irm scoop.201704.xyz -outfile 'install.ps1'# .\install.ps1 -ScoopDir 'D:\Scoop' -ScoopGlobalDir 'D:\GlobalScoopApps'#添加包含国内软件的的scoopcn bucket,其他bucket可以自行添加scoop bucket add scoopcn https://gitee.com/scoop-installer/scoopcn
}
function Add-ScoopBuckets
{<# .SYNOPSIS基本上,添加spc这个bucket就够了,软件数量很丰富.DESCRIPTION可以根据自己的需要往里面修改或添加更多的bucket#>[CmdletBinding()]param ()Write-Host 'Adding more buckets...(It may take a while, please be patient!)'scoop bucket add spc $mirror/https://github.com/lzwme/scoop-proxy-cn   }
function Deploy-ScoopForCNUser
{# & "$PSScriptRoot\scoopDeploy.ps1"<# 
.SYNOPSIS
国内用户部署scoop
.Description
允许用户在一台没有安装git等软件的windows电脑上部署scoop包管理工具
如果你事先安装好了git,那么可以选择不安装(默认行为)脚本会通过github镜像站加速各个相关链接进行达到提速的目的通过加速站下载原版安装脚本通过替换原版安装脚本中的链接为加速链接来加速安装scoop根据需要创建临时的bucket,让用户可以通过scoop来安装git等软件
针对某些Administrator用户,scoop默认拒绝安装,这里根据官方指南,做了修改,允许用户选择仍然安装
.NOTES
代码来自git/gitee上的开源项目(感谢作者的相关工作和贡献).DESCRIPTION
使用镜像加速下载scoop原生安装脚本并做一定的修改提供加速安装(但是稳定性和可靠性不做保证)
此脚本参考了多个开源方案,为提供了更多的灵活性和备用方案的选择,尤其是可以添加spc这个大型bucket,以提供更多的软件包
.LINK
镜像加速参考
https://github.akams.cn/ 
.LINK
https://gitee.com/twelve-water-boiling/scoop-cn
.LINK
# 提供 Deploy-ScoopByGitee 实现资源
https://gitee.com/scoop-installer/scoop
.LINK
# 提供 Deploy-scoopbyGithubMirrors 实现方式
https://lzw.me/a/scoop.html#2%20%E5%AE%89%E8%A3%85%20Scoop
.LINK
# 提供 大型bucket spc 资源
https://github.com/lzwme/scoop-proxy-cn
.LINK
相关博客
#提供 Deploy-ScoopForCNUser 整合与改进
https://cxxu1375.blog.csdn.net/article/details/121067836在这里搜索scoop相关笔记
https://gitee.com/xuchaoxin1375/blogs/blob/main/windows #>[CmdletBinding(DefaultParameterSetName = 'Manual')]param(# 是否仅查看内置的候选镜像列表# [switch]$CheckMirrorsBuildin,# 从镜像列表中选择镜像# [switch]$SelectMirrorFromList,# 是否安装基础软件,比如git等(考虑到有些用户已经安装过了,我们可以按需选择)[parameter(ParameterSetName = 'Manual')][switch]$InstallBasicSoftwares,[parameter(ParameterSetName = 'Gitee')][switch]$UseGiteeForkAndBucket,# 是否添加一个大型的bucket[switch]$AddMoreBuckets,# 延迟启动安装,给用户一点时间反悔$delay = 3)# return $mirror# 安装 Scoop# Gitee方案(简短,执行完后自动退出)if ($UseGiteeForkAndBucket){Write-Host 'UseGiteeForkAndBucket scheme...'Start-Sleep $delayDeploy-ScoopByGitee}# 手动配置镜像方案else{Write-Host 'Use manual scheme...'# Start-Sleep $delayDeploy-ScoopByGithubMirrors -InstallBasicSoftwares:$InstallBasicSoftwares}if ($AddMoreBuckets){# 添加bucket,包含很多软件包(几乎scoop bucket known列出的bucket的软件都能够在spc中找到)Add-ScoopBuckets}#检查用户安装了哪些bucket,以及对应的bucket源链接scoop bucket list}

Notes

  • 上述脚本经过测试,可以正常工作
  • 可以新建一个本地账户(利用语句net user tester 1 /add创建一个测试用户tester,密码是1);登陆tester来验证其是否能工作

获取脚本文件及其使用

导入

  • 方案1:从脚本文件导入powershell

    • 可以复制粘贴上述代码到文本文件,然后修改后缀为.ps1

    • 也从仓库的Deploy-ScoopForCNUser中保存脚本文件

    • 然后打开powershell执行这个脚本文件,会导入其中的函数

  • 方案2:通过复制粘贴到powershell中回车导入

执行方案

  • 导入完毕后,选择执行方案

    • 这里提供了多个函数,其中主要函数是deploy-ScoopForCNUser ,有两大类调用语法(对应两类部署方案,默认使用第一种)

      • PS C:\repos\scoop-cn> gcm Deploy-ScoopForCNUser -SyntaxDeploy-ScoopForCNUser [-InstallBasicSoftwares] [-AddMoreBuckets] [-delay <Object>] [<CommonParameters>]Deploy-ScoopForCNUser [-UseGiteeForkAndBucket] [-AddMoreBuckets] [-delay <Object>] [<CommonParameters>]
        
  • 如果用户事先安装过Git,那么可以直接执行Deploy-ScoopForCNUser,其他参数可选

  • 对于没有安装过Git的用户,建议使用(否则会因为确实Git而无法添加Bucket等操作)

    deploy-ScoopForCNUser -InstallBasicSoftwares
    
  • 或者使用另一种Gitee方案安装

    deploy-ScoopForCNUser -UseGiteeForkAndBucket
    

FAQ

  • 对于脚本文件方案,如果执行失败,可以设置执行策略:

    set-executionPolicy -Scope CurrentUser -ExecutionPolicy bypass
    
    • 然后重新尝试

refs

.LINK
镜像加速参考
https://github.akams.cn/
.LINK
https://gitee.com/twelve-water-boiling/scoop-cn
.LINK

提供 Deploy-ScoopByGitee 实现资源

https://gitee.com/scoop-installer/scoop
.LINK

提供 Deploy-scoopbyGithubMirrors 实现方式

https://lzw.me/a/scoop.html#2%20%E5%AE%89%E8%A3%85%20Scoop
.LINK

提供 大型bucket spc 资源

https://github.com/lzwme/scoop-proxy-cn
.LINK
相关博客
#提供 Deploy-ScoopForCNUser 整合与改进
https://cxxu1375.blog.csdn.net/article/details/121067836

在这里搜索scoop相关笔记
https://gitee.com/xuchaoxin1375/blogs/blob/main/windows


http://www.mrgr.cn/news/4198.html

相关文章:

  • 权威解读!中国数字经济发展指数报告2023(PDF限免下载)
  • python创建项目环境及项目打包
  • 微软AI人工智能认证有哪些?
  • [游戏开发] LuaTable转string存读二进制文件
  • 数据结构(邓俊辉)学习笔记】优先级队列 04——完全二叉堆:插入与上滤
  • vue2 动态组件
  • 【Qt】输入类控件QLineEdit
  • Springboot3 HttpUtil post、get请求
  • 【操作系统 / 系统编程】2025 秋招超详细复习指南 - 基于 Linux 环境的全面复习 - 持续更新(目前1.3w字)
  • presto 分页
  • Element-ui table进阶使用
  • 设计模式六大原则(四)--接口隔离原则
  • 如何使用AWS EC2资源?
  • 【经典算法】BFS_最短路问题
  • 将 hugo 博客搬迁到服务器
  • javaEE中自定义注解以及注解的解析
  • 【HTML】从0开始构建HTML页面
  • 探索Ruby在物联网世界的无限可能:智能连接与创新应用
  • 高校迎新系统app/基于android的高校迎新系统的设计与实现
  • Tomcat使用及负载均衡(最全源码安装及配置使用教程)