Files
lazyrun/internal/update/install.go
T
oxpoe e8fa35d70d Auto update: cek rilis GitHub, notifikasi, dan pemasangan AppImage
- 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
2026-10-13 08:00:12 +07:00

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
}