有没有办法使用 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 资源管理器进行解压,链接将会损坏。