mklink 可以制作可移植链接吗?

mklink 可以制作可移植链接吗?

有没有办法使用 mklink 在 NTFS 中创建可移植链接?或者有更好的解决方案?

我希望能够以 zip 文件或文件夹副本的形式分发应用程序,其中有一个“真实”的 exe 和一个使用不同名称指向该 exe 的指针,例如:

C:\Temp\link test\source>dir
 Volume in drive C is OS

 Directory of C:\Temp\link test\source

19/05/2014  11:35    <DIR>          .
19/05/2014  11:35    <DIR>          ..
19/05/2014  11:35    <SYMLINK>      OldService.exe [NewService.exe]
19/05/2014  11:32                 9 NewService.exe

但如果你复制它,那就不起作用了。

您只会获得原始文件的两个副本。配置文件也必须链接 (.exe.config),这样配置才不会不同步。

有什么办法可以制作便携式链接吗?

答案1

符号链接是 NTFS 文件系统结构的一个功能。据我所知,ZIP 文件不具备此功能。因此,如果您需要将其分发到 zip 文件中,则无法正常工作。

但是,您可以创建一个批处理文件,在解压将创建链接的内容后运行该文件,但您需要注意,该批处理文件必须以管理员身份运行。

答案2

使用 7-Zip 工具,您可以存档符号链接或硬链接,但只能使用 Tar 文件:

# symlink
7z a -snl c.tar a.txt b.txt
# hard link
7z a -snh c.tar a.txt b.txt
# extract
7z x c.tar

https://7-zip.org/download.html

使用 Bsdtar 工具,您可以将符号链接和硬链接存档到 Tar 文件,或将符号链接存档到 Zip 文件:

# tar
bsdtar -c -f c.tar a.txt b.txt
bsdtar -x -f c.tar
# zip
bsdtar -a -c -f c.zip a.txt b.txt
bsdtar -x -f c.zip

https://github.com/libarchive/libarchive/actions/runs/54958649

但如果您创建 Zip 文件,则也需要使用相同的工具进行解压。如果您使用 Windows 资源管理器进行解压,链接将会损坏。

相关内容