- Paket internal/update: ambil rilis terbaru (API GitHub), bandingkan versi semver sederhana, unduh AppImage ke berkas sementara lalu tukar atomik (verifikasi magic ELF+AI; kalau gagal, AppImage lama tetap utuh) - UI: cek otomatis 2 detik setelah aplikasi tampil (hanya kalau jalan sebagai AppImage), dialog notifikasi versi baru + catatan rilis, tombol Update now / Halaman rilis / Nanti - Pemasangan: lewat AppImageUpdate kalau terpasang, kalau tidak unduh sendiri; setelah selesai ditawarkan Restart (jalankan AppImage baru lalu tutup yang lama) - Tombol footer Cek Update memakai alur yang sama dan selalu memberi jawaban - LAZYRUN_UPDATE_API untuk mengarahkan cek update ke server lain (tes/fork) - Tes: perbandingan versi, parsing rilis, penukaran AppImage, penolakan berkas bukan AppImage
22 lines
488 B
Go
22 lines
488 B
Go
package update
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
)
|
|
|
|
// maxDownload membatasi ukuran unduhan (AppImage LazyRun ~12 MB).
|
|
const maxDownload = 300 << 20
|
|
|
|
// copyWithLimit menyalin sampai batas tertentu supaya unduhan tidak menghabiskan disk.
|
|
func copyWithLimit(dst io.Writer, src io.Reader, limit int64) (int64, error) {
|
|
n, err := io.Copy(dst, io.LimitReader(src, limit+1))
|
|
if err != nil {
|
|
return n, err
|
|
}
|
|
if n > limit {
|
|
return n, errors.New("berkas rilis terlalu besar")
|
|
}
|
|
return n, nil
|
|
}
|