Winget对于自定义安装路径的疑问🤔

Windows上个人习惯使用包管理工具,对于更新管理迁移大大减少了心智负担。
对于一部分在scoop上缺失或版本滞后的应用,我使用winget补充,但在使用时对于自定义安装路径有些疑问:thinking:

  • 打包格式inno, nsis, nullsoft的安装程序,可以使用--location参数来自定义路径
winget install <包ID> --location "D:\Applications\<名称>"
  • 打包格式wix的安装程序,通过询问AI,似乎可以通过--override 参数来自定义路径
winget install <包ID> --override "INSTALLDIR="D:\Applications\<名称>"

但问题来了

对于几个用wix打包的常用应用,我将下面这几种参数格式都试了一遍

--override "TARGETDIR=D:\路径"
--override "APPDIR=D:\路径"
--override "CUSTOMDIR=D:\路径"

基本没有应用可以正确识别传递参数,只是打开了安装界面,不再静默安装,让我手动安装,与我使用包管理器的初衷相悖。

  • 这问题是因为大多数开发者无心去使用这个参数规范吗??
  • 是否有什么技术手段可以查询一个安装程序的可传递参数(排除查文档)

无法解答你的疑问,但我想借地表达一下自己的看法:

我认为的“使用包管理器”是一种“用户主动放弃一部分自定义选项,交由工具以默认选项完成从下载到安装再到初始化配置等一系列流程”的行为。

既然 Windows 软件安装程序没有一个统一的修改默认安装路径的方案,并且包管理器已提供的尝试覆盖安装路径参数无效,此时如果仍要修改安装路径,就已经与使用包管理器的出发点相悖了,回退到交互式手动安装也是非常合理的。

包管理器能批量导出软件的设置么?这样重装后导入设置即可还原。否则只是节省安装流程的时间的话意义不太大,毕竟安装后把软件设成自己常用的配置花的时间更多。

可以,Scoop可以保存软件数据,winget不行

碰到过,没找到解决方案,大概率是包不支持 --location ,也不知道怎么给审核通过的,也有可能微软觉得自定义路径非强制要求,相比之下scoop基本都遵循规范,除非极少数只是个安装启动器的除外

运行 winget --info 来提供有关默认目录的信息

然后用软链接的办法修改路径.

我不喜欢winget这类软件的主要原因就是不可控

1 个赞

其实可以自己维护包的,时间成本并不高