rmyorston / busybox-w32

WIN32 native port of BusyBox.
https://frippery.org/busybox
Other
674 stars 124 forks source link

Uninstall through hash comparison or similar/no clobber install #377

Closed JunglePredator closed 9 months ago

JunglePredator commented 9 months ago

Just a request for a change on the behaviour on install/uninstall.

Your Busybox meets most my quick 'windows doesn't do what I want' demands, and I install it with other tools I use to path. However when running 'busybox uninstall' it removes anything that matches... including such things as a static grep I've put in instead. It'd be nice if it did a 'smart' remove & compared md5 or similar before removing an item. On a similar note... I haven't tried but I assume it'd also clobber anything that matches like grep.exe when using 'busybox install'

rmyorston commented 9 months ago

busybox --install doesn't clobber an existing file:

~ $ mkdir linkdir
~ $ cd linkdir
~/linkdir $ touch grep.exe
~/linkdir $ cp ../busybox.exe .
~/linkdir $ ./busybox.exe --install
~/linkdir $ ls -l grep.exe egrep.exe
-rwxrwxr-x  171 rmy      rmy         611342 Dec 07 11:25 egrep.exe
-rwxrwxr-x    1 rmy      rmy              0 Dec 07 11:25 grep.exe
~/linkdir $

busybox --uninstall is smart. It only removes files that are hard links to the specified file:

~/linkdir $ ../busybox --uninstall busybox.exe
~/linkdir $ ls -l grep.exe egrep.exe
ls: egrep.exe: No such file or directory
-rwxrwxr-x    1 rmy      rmy              0 Dec 07 11:25 grep.exe
~/linkdir $
JunglePredator commented 9 months ago

Well it's be a couple years since I tried uninstall.

just testing --uninstall now & I can't actually get it to do anything. (For the --uninstall; the --install worked fine.)

Just to make sure I downloaded a new copy so:

c:\incoming\busybox.exe --install "c:\command junk\"

c:\incoming\busybox.exe --uninstall "c:\command junk" busybox: c:/command junk/: Permission Denied

c:\incoming\busybox.exe --uninstall "c:\command junk\"

And that returns nothing; file count in the install directory doesn't change.

rmyorston commented 9 months ago

The argument to busybox --uninstall should be one of the files in the directory c:/command junk, not the directory itself.

JunglePredator commented 9 months ago

Ah, thank you. I was under the impression it would just remove the aliases. Many years ago I did some how get it to delete everything but a non-issue then.

Thanks.