Scoop的使用@基础和进阶使用@Scoop中文用户@多版本切换和快捷方式修复等常见问题及其解决方案

abstract

  • Scoop的使用@基础和进阶使用@Scoop中文用户
  • 配合aria2多路下载@缓存管理
  • 多版本切换和快捷方式修复等常见问题及其解决方案

scoop 官方指南@探索 Scoop:Windows 的命令行安装器

Scoop 是一个面向 Windows 系统的命令行软件安装器,它以其简洁和高效而受到用户的喜爱。以下是对 Scoop 的全面介绍和使用总结。

快速开始(安装和部署scoop for CN)

官方默认版本安装部署很慢,成功率低,安装软件慢

推荐使用国内镜像加速过的方案部署scoop

国内用户快速部署Scoop@一键加速安装scoop@Deploy-ScoopForCNUser_scoop 安装-CSDN博客

Scoop 的特点👺

Scoop 的设计宗旨是简化从命令行安装程序的过程。它具备以下特点:

  • 消除权限弹出窗口。
  • 隐藏 GUI 向导式安装程序。
  • 预防安装多个程序导致的 PATH 污染。
  • 避免安装和卸载程序时出现的意外副作用。
  • 自动查找并安装依赖项。
  • 自动执行所有额外的设置步骤以确保程序正常工作。

推荐设置

  • scoop 提供了scoop checkup命令来检查当前scoop运行环境的潜在问题

  • 根据提示(Warn)将相关的推荐设置执行掉可以有更好的使用体验,尽管这不是必须的

  • 例如一个刚安装的scoop可能有如下警告

    PS> scoop checkup
    WARN  LongPaths support is not enabled.
      You can enable it by running:
        sudo Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
      (Requires 'sudo' command. Run 'scoop install sudo' if you don't have it.)
    WARN  Windows Developer Mode is not enabled. Operations relevant to symlinks may fail without proper rights.
      You may read more about the symlinks support here:
      https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/
    WARN  'Inno Setup Unpacker' is not installed! It's required for unpacking InnoSetup files. Please run 'scoop install innounp'.
    WARN  Found 3 potential problems.
    

Scoop 的存储结构@Scoop家目录@快速启动scoop安装的应用👺👺

Scoop 以便携式方式下载和管理软件包,并将它们整齐地隔离在 ~\scoop 目录中。它不会在 Scoop 家目录之外安装文件,您可以将 Scoop 安装在任何喜欢的位置。

scoop安装完的命令有两类,其中GUI程序无法直接从终端启动(除非你手动配置其别名或者路径到Path环境变量)

终端中启动的命令行工具文件夹(CLI程序)

对于终端应用程序,Scoop 在 ~\scoop\shims 文件夹中创建“ shims ”(一种命令行快捷方式),这些快捷方式可以在 PATH 中访问。

开始菜单中的Scoop文件夹(GUI程序)

对于图形应用程序,Scoop 在专门的开始菜单文件夹“ Scoop Apps”中创建程序快捷方式。

这种情况下,建议您从开始菜单中输入GUI程序名字,然后启动

这样,软件包可以被干净地卸载,您可以清楚地知道当前在 PATH 和开始菜单中的工具。

命令行中启动scoop安装的GUI应用👺

  • scoop默认让命令行类的工具在安装完毕后就可以直接在命令行内直接调用(只要知道程序的名字即可)

  • 而对于GUI程序不会为你添加相应的环境变量到path中,但是scoop创建了一个文件夹,添加到了开始菜单的Programs目录中,用户可以在开始菜单的所有程序中找到这个文件夹(但是确无法直接跳转到对应的资源管理器路径)

    • 使用scoop which <GUIapp>来找到scoop apps目录,例如我想要找到7-zip的图形界面程序(可以事先安装好)

      PS> scoop which 7-zip
      ~\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps\7-Zip.lnk
      
    • 可以看到,这个路径被我们找到,就是7-zip.lnk前的部分

    • 然而7-zip是数字开头的程序名,shell无法直接为其提供补全,

      • 在powershell中,您可以考虑用&打头,然后输入7-加上Tab键可以触发补全(7-zip)会自动加上引号PS> & '7-Zip.lnk'
  • Scoop安装的GUI软件能在开始菜单的Scoop Apps中找到,主要是通过以下机制实现的:

    1. 快捷方式创建:当Scoop安装GUI应用程序时,它会在Windows的开始菜单目录下创建快捷方式。具体路径通常是可以用以下方式打开

      1. %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps,您可以在资源管理器的地址栏中输入此地址打开,或者命令打开

      2. cmd

        explorer "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps"
        
      3. powershell

        explorer "$home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps"
        
    2. 这个scoop apps文件夹中的内容主要是GUI程序的快捷方式(lnk),他们不是程序本身

      • 由于默认的PathExt取值中没有.lnk,因此即便scoop apps目录%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps被添加到Path环境变量可能也无法直接从命令行中直接根据各个程序的快捷方式来直接启动程序;
      • 为了解决这个问题,我们需要修改系统环境变量PathExt,然后向其中的取值添加一个.LNK,然后将scoop apps目录添加到Path环境变量中即可
    3. 对于全局安装的情况,开始菜单中的目录又有所不同

      • explorer 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Scoop Apps'
        
      • 类似的,把目录C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Scoop Apps添加到Path变量中,就可以实现命令行中启动相应的软件(同样要求PathExt变量配置了.LNK)

一键配置脚本👺👺

# 需要以管理员权限运行此脚本

# 定义 Scoop Apps 目录路径
$scoopAppsPathEx = [System.Environment]::ExpandEnvironmentVariables('%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps')
$scoopAppsPath = '%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps'

# 修改用户 PATH 环境变量
$userPath = [System.Environment]::GetEnvironmentVariable('PATH', 'User')
if ($userPath -notlike "*$scoopAppsPathEx*")
{
   
    $newUserPath = $scoopAppsPath + ';' + $userPath
    [System.Environment]::SetEnvironmentVariable('PATH', $newUserPath, 'User')
    Write-Host '已将 Scoop Apps 目录添加到用户 PATH 环境变量中。'
}
else
{
   
    Write-Host 'Scoop Apps 目录已在用户 PATH 环境变量中。'
}
#刷新当前shell中的Path变量(非永久性,当前shell会话有效)
$env:path += $scoopAppsPath
# 修改系统 PATHEXT 环境变量
$systemPathExt = [System.Environment]::GetEnvironmentVariable('PATHEXT', 'Machine')
if ($systemPathExt -notlike '*.LNK*')
{
   
    $newSystemPathExt = '.LNK' + ';' + $systemPathExt
    [System.Environment]::SetEnvironmentVariable('PATHEXT', $newSystemPathExt, 'Machine')
    Write-Host '已将 .LNK 添加到系统 PATHEXT 环境变量中。'
}
else
{
   
    Write-Host '.LNK 已在系统 PATHEXT 环境变量中。'
}
#全局安装的GUI软件添加到Path(系统级Path)
$systemPath = [System.Environment]::GetEnvironmentVariable('PATH', 'Machine')
$ScoopAppsG = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Scoop Apps'
if($systemPath -notlike "*$ScoopAppsG*"){
   

    $newSystemPath = $scoopAppsG + ';' + $SystemPath
    [System.Environment]::SetEnvironmentVariable( 'Path', $newSystemPath
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cxxu1375

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值