feat: initial commit
This commit is contained in:
32
docs/updates/bundle-archive-v1.md
Normal file
32
docs/updates/bundle-archive-v1.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Bundle Archive v1
|
||||
|
||||
Downloaded updates are bundle archives rather than installer executables.
|
||||
|
||||
Archive requirements:
|
||||
|
||||
- top-level `bundle.json`
|
||||
- payload files stored relative to the install root
|
||||
- no absolute paths
|
||||
- no `..` path traversal
|
||||
- provider checksum must match the downloaded archive before staging
|
||||
|
||||
`bundle.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"entrypoint": "MyApp.exe",
|
||||
"files": [
|
||||
{ "path": "MyApp.exe", "mode": "0755" },
|
||||
{ "path": "resources/config.json", "mode": "0644" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Install roots:
|
||||
|
||||
- macOS: the `.app` bundle directory
|
||||
- Windows: the directory containing the running `.exe`
|
||||
- Linux: the directory containing the running binary
|
||||
|
||||
The helper-mode apply flow stages the archive, validates `bundle.json`, backs up existing files, copies payload files into the install root, and relaunches the app using `entrypoint`.
|
||||
Reference in New Issue
Block a user