rust 无法在Windows上的终端中安装要全局使用的CLI工具

nnsrf1az  于 2023-03-18  发布在  Windows
关注(0)|答案(1)|浏览(129)

我制作了一个Rust CLI工具,希望向用户提供下载说明。
这个工具可以让你运行convert <some args>这样的命令,也可以让你在不同基数的数字之间进行转换,这里的关键是我试图让你全局运行带有关键字convert的命令,而不是让用户必须在项目目录中运行cargo run <args>./main <args>
我的Cargo.toml如下所示:

[package]
name = "converter_cli"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[[bin]]
name = "convert"
path = "src/main.rs"

目前,经过一番研究,我已经写了这些指令,工作我的电脑(Mac M1):
1.请确保您的系统上安装了Rust。如果没有,请use this link
1.克隆存储库:git clone https://github.com/mattrltrent/base_converter .
1.在项目目录中,运行cargo build --release
1.在项目目录中,运行cargo install --path .(不要错过结尾的.)。
1.现在应该可以全局运行该工具了,为了确保这一点,请检查是否可以运行convert version
然而,我已经在Windows PC上运行了这些指令,当尝试运行convert <args>时,我得到了错误“无效的驱动器规格”。
有没有更好的方法可以统一地在Linux、Windows和MacOS上发布(而不将其发布为Cargo crate)?如果没有,为什么这些说明不适用于Windows?
如果相关,我的文件结构如下:

assets
-> <random image assets>
src
-> conversions.rs
-> errors.rs
-> main.rs
target
.gitignore
Cargo.lock
Cargo.toml
README.md
nszi6y05

nszi6y051#

命名问题

这个名字被系统内置的:
convert已经是有效命令:
将磁盘从一种类型转换为另一种类型。

以下是一些解决方案:
1.通过完整路径引用应用程序 (很难看,但应该可以)
1.在Windows上为应用程序指定别名
1.将应用程序重命名为更唯一的名称

分发

分发是一个很大的主题。
想想你通常是如何安装新软件的。行为不仅与人不同,而且与所使用的操作系统、用户限制(管理员权限)等不同。

提供已编译的程序

(as@PaulDempsey已经建议过了)(一般来说大多数人都习惯了)

哪里
  • 在GitHub中发布
  • 在专用网页上
  • 在某个软件门户/应用程序商店
怎么样
  • 简单地说就是二进制(又称*.exe
  • Package 在安装程序中

将软件包添加到软件包管理器存储库

有一堆包管理器要考虑,有不同的方法来获得自己的应用程序在那里,但有例如:

  • 适用于macOS的酿造
  • apt,pacman和更多Linux版本
  • 适用于Windows的巧克力
  • ...

他们中的一些人可能会为您编译一些东西,其他人可能只是随附可执行文件。

将步骤转换为安装脚本

你的大多数步骤可以很容易地转换成shell和/或批处理脚本,这样用户就可以简单地运行install.sh,一切都很好,这样你就可以自动区分不同系统上的行为。

相关问题