chshersh / tool-sync

🧰 Download pre-built binaries of all your favourite tools with a single command
https://crates.io/crates/tool-sync
Mozilla Public License 2.0
69 stars 16 forks source link

[#115] Allow self-updates on Windows #162

Open FrancisMurillo opened 1 year ago

FrancisMurillo commented 1 year ago

Allow self-updates on Windows by using self-replace crate.

I was able to test this by building a release from Linux to Windows and the self-update works. I would appreciate if somebody else can test this with a dedicated Windows setup since it would take me some time to setup Windows for Rust. Going to add a Windows CI test if I can.

One caveat with std::env::current_exe is that if the executable is a symbolic link, this may be confused with updating the target of the link or the link itself. Given that the executables are in the store_directory and that should be in PATH, the executables should not be a symbolic link so this should not be an issue. Still this may be an edge case.

Resolves #115

Additional tasks

FrancisMurillo commented 1 year ago

I think the Windows and Unix CI test is sufficient for testing the self-update so I think the PR is ready for review now.