Implement auto-update routine
This commit is contained in:
@@ -42,7 +42,7 @@ empty, so `--config` always wins.
|
||||
```
|
||||
hello-agent.exe --install
|
||||
│
|
||||
└──> creates Windows service "HelloAgent", binPath ends in --service
|
||||
└──> creates Windows service "hello-agent", binPath ends in --service
|
||||
│
|
||||
hello-agent.exe --service # Session 0, LocalSystem
|
||||
│
|
||||
@@ -191,7 +191,7 @@ To pull updates from upstream RustDesk:
|
||||
|
||||
## Stale keys / supporter "stuck on connecting"
|
||||
|
||||
The agent's identity (`id`) and `key_pair` live in `HelloAgent.toml`.
|
||||
The agent's identity (`id`) and `key_pair` live in `hello-agent.toml`.
|
||||
They're generated once on first run, registered with the rendezvous
|
||||
server, and re-used forever after. **If the rendezvous server's cached
|
||||
entry and the agent's local keypair drift apart, the encrypted handshake
|
||||
@@ -221,7 +221,7 @@ dir so the agent keypair survives an uninstall→reinstall cycle. To force
|
||||
a fresh keypair, also run after `--uninstall`:
|
||||
|
||||
```
|
||||
rmdir /s /q "%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\HelloAgent"
|
||||
rmdir /s /q "%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\hello-agent"
|
||||
```
|
||||
|
||||
…and then delete the device record from the admin UI as above.
|
||||
@@ -229,7 +229,7 @@ rmdir /s /q "%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\HelloAgen
|
||||
## Verifying end-to-end
|
||||
|
||||
1. Install: `hello-agent.exe --install --config <BLOB>` from elevated PowerShell.
|
||||
2. Confirm: `sc query HelloAgent` → `RUNNING`.
|
||||
2. Confirm: `sc query hello-agent` → `RUNNING`.
|
||||
3. From another machine running stock `rustdesk.exe`, enter the agent's
|
||||
ID and click Connect.
|
||||
4. The agent's logged-in user sees `HelloAgent — Allow remote support?`.
|
||||
@@ -241,7 +241,7 @@ rmdir /s /q "%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\HelloAgen
|
||||
`hbb_common` ships a single global, `APP_NAME`, that drives the location
|
||||
of every piece of on-disk state (config dir, log dir) and the prefix of
|
||||
every named pipe. Upstream defaults it to `"RustDesk"`. Hello-agent
|
||||
rewrites it to `"HelloAgent"` as the very first line of `main()` —
|
||||
rewrites it to `"hello-agent"` as the very first line of `main()` —
|
||||
identical to the write path the upstream Flutter build uses for OEM
|
||||
rebrands ([`read_custom_client`](vendor/rustdesk/src/common.rs)). Because
|
||||
`APP_NAME` is a `RwLock<String>` read lazily on first use, doing the
|
||||
@@ -252,16 +252,16 @@ In practice that means:
|
||||
|
||||
| What | Stock rustdesk | hello-agent |
|
||||
| --------------------------------- | ----------------------------------------- | ------------------------------------------------- |
|
||||
| User-mode config / logs | `%APPDATA%\RustDesk\` | `%APPDATA%\HelloAgent\` |
|
||||
| Service-mode config / logs | `…\LocalService\AppData\Roaming\RustDesk\`| `…\LocalService\AppData\Roaming\HelloAgent\` |
|
||||
| Identity file (id + keypair) | `RustDesk.toml` | `HelloAgent.toml` |
|
||||
| IPC pipe namespace | `\\.\pipe\RustDesk\query…` | `\\.\pipe\HelloAgent\query…` |
|
||||
| Windows service name | `RustDesk` | `HelloAgent` |
|
||||
| User-mode config / logs | `%APPDATA%\RustDesk\` | `%APPDATA%\hello-agent\` |
|
||||
| Service-mode config / logs | `…\LocalService\AppData\Roaming\RustDesk\`| `…\LocalService\AppData\Roaming\hello-agent\` |
|
||||
| Identity file (id + keypair) | `RustDesk.toml` | `hello-agent.toml` |
|
||||
| IPC pipe namespace | `\\.\pipe\RustDesk\query…` | `\\.\pipe\hello-agent\query…` |
|
||||
| Windows service name | `RustDesk` | `hello-agent` |
|
||||
| Install dir | `%ProgramFiles%\RustDesk\` | `%ProgramFiles%\hello-agent\` |
|
||||
|
||||
The two binaries can therefore coexist on the same machine without
|
||||
clobbering each other's state. The override is set in
|
||||
[`src/main.rs`](src/main.rs) (`pub const APP_NAME: &str = "HelloAgent"`)
|
||||
[`src/main.rs`](src/main.rs) (`pub const APP_NAME: &str = "hello-agent"`)
|
||||
— change it there if you ever need to re-brand.
|
||||
|
||||
## Where logs go
|
||||
@@ -270,10 +270,10 @@ clobbering each other's state. The override is set in
|
||||
|
||||
| Mode (CLI flag) | Effective user | Log dir |
|
||||
| --------------------- | ------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `--install` / `--uninstall` | calling user (must be admin) | `%APPDATA%\HelloAgent\log\install\` (or `…\uninstall\`) |
|
||||
| `--service` | LocalSystem (mirrored) | `%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\HelloAgent\log\service\` |
|
||||
| `--server` (worker) | LocalSystem (mirrored) | `%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\HelloAgent\log\server\` |
|
||||
| no flags (dev mode) | calling user | `%APPDATA%\HelloAgent\log\hello-agent\` |
|
||||
| `--install` / `--uninstall` | calling user (must be admin) | `%APPDATA%\hello-agent\log\install\` (or `…\uninstall\`) |
|
||||
| `--service` | LocalSystem (mirrored) | `%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\hello-agent\log\service\` |
|
||||
| `--server` (worker) | LocalSystem (mirrored) | `%SystemRoot%\ServiceProfiles\LocalService\AppData\Roaming\hello-agent\log\server\` |
|
||||
| no flags (dev mode) | calling user | `%APPDATA%\hello-agent\log\hello-agent\` |
|
||||
|
||||
The `cm_popup` module also writes a parallel diagnostic trace at
|
||||
`%TEMP%\hello-agent-cm.log` (kept around for debugging the IPC handshake;
|
||||
@@ -284,7 +284,7 @@ it duplicates info that's already in the main log).
|
||||
- ✅ Windows x64 (physical console *and* RDP sessions — the agent picks
|
||||
whichever session the user is actively using)
|
||||
- ✅ Coexists with stock RustDesk on the same box — config dir, log dir,
|
||||
and named pipes are namespaced under `HelloAgent` rather than the
|
||||
and named pipes are namespaced under `hello-agent` rather than the
|
||||
upstream default of `RustDesk` (see [Namespacing](#namespacing) below).
|
||||
The only residual contention is the optional direct-server port
|
||||
(TCP 21118) and LAN-discovery port (UDP 21119); both default to off,
|
||||
|
||||
Reference in New Issue
Block a user