Aplikasi yang memperbarui sendiri - filsafat

15

Ini adalah pertanyaan filosofis.

Diberikan aplikasi desktop hipotetis, dan keinginan untuk menyediakan pembaruan otomatis (alih-alih memaksa orang pergi ke situs web, periksa pembaruan, unduh pembaruan, instal), manakah di antara keduanya yang lebih merupakan pendekatan "praktik terbaik"?

  1. Seperti iTunes , ia memeriksa untuk melihat apakah ada versi baru dan meminta pengguna untuk mengunduh versi baru. Jika demikian, ia mengunduh executable instalasi lengkap (dalam hal ini, file Pemasang Windows (.msi)) yang menginstal versi lengkap (bukan hanya pemutakhiran ke versi sebelumnya - terlalu banyak untuk dikelola jika ada banyak versi di luar sana) . Jadi, katakanlah, ini versi 10.1.1 - apakah Anda menginstal baru atau meningkatkan, Anda menggunakan file yang sama. Setelah diunduh, itu memerintahkan pengguna untuk menutup aplikasi dan menjalankan sendiri file instal.

  2. Mirip dengan yang lain, ia memeriksa versi baru dan meminta pengguna untuk mengunduhnya, tetapi alih-alih hanya mengunduh yang dapat dieksekusi dan mendorong pengguna untuk menjalankannya, itu benar-benar menjalankannya untuk mereka - mematikan program yang telah mereka buka, memperolehnya keamanan yang diperlukan untuk menginstal file.

Masalah dengan # 2: banyak masalah seputar penutupan program, karena program dapat membuka program lain ( Outlook dan Excel ), atau bagaimana jika pengguna berada di tengah-tengah sesuatu. Juga tentang keamanan, Anda memerlukan akses administrator lokal untuk menginstal, bagaimana jika Anda tidak memilikinya? Di versi Windows yang lebih baru, Anda tidak bisa hanya mengabaikan keamanan orang tersebut.

Masalah dengan # 1: beberapa orang percaya ini akan terlalu sulit, terlalu banyak usaha untuk pengguna akhir.

Saya akan sangat memilih untuk pergi dengan # 1 karena akan menghemat 80-120 jam pada proyek saya, dan lebih mudah untuk diterapkan dan dipelihara. Namun, kami memiliki orang-orang yang merasa kuat di semua sisi.

Apa praktik terbaik untuk hal semacam ini?

Shannon Davis
sumber
Saya tidak begitu yakin itu filosofis, sepertinya dia mencari solusi untuk saya.
Jadi tidak apa-apa untuk mengajukan pertanyaan Desain / Arsitektur di sini?
Pertanyaan saya adalah, mengapa # 2 mengharuskan program untuk dimatikan dan dihidupkan ulang? Jika ini merupakan pembaruan keamanan maka itu dapat dimengerti, tetapi pengguna normal menutup dan membuka kembali program setidaknya sekali sehari jika tidak lebih, jadi mengapa tidak menginstalnya di latar belakang, biarkan pengguna menjalankan program menggunakan versi lama dalam memori , dan kemudian ketika mereka me-restart gunakan versi baru yang diinstal. Tidak perlu repot, tidak perlu repot.
Mike S
@ Mike S: itu tidak mungkin pada Windows (tidak dapat menimpa file yang dapat dieksekusi yang sedang berjalan) dan bahkan di Linux itu bukan ide yang sangat baik (jika Anda membuka contoh lain, Anda akan memiliki satu menjalankan kode lama dan satu menjalankan kode baru - jika ada IPC yang terjadi, itu lebih buruk lagi)
Dean Harding
Dari pengalaman: jika Anda memeriksa pembaruan, jangan program Anda melakukannya setiap hari di tengah malam atau jam 3 sore. Tampaknya masuk akal, tetapi Anda mengakhiri DDOS di server Anda sendiri. Tambahkan saja hingga 3600 detik keacakan; itu bukan yang mendesak.
MSalters

Jawaban:

20

Secara pribadi, saya lebih suka pendekatan Google Chrome. Direktori dasar dengan peluncur, dan subdirektori untuk setiap versi perangkat lunak yang diinstal. Peluncur hanya mencari nomor versi tertinggi dan menggunakannya dan menghapus versi yang lebih lama sesuai kebutuhan. Tugas pembaru berjalan sangat sering untuk mengunduh dan membuat direktori baru. Ketika versi baru diinstal, aplikasi yang berjalan meminta restart untuk menggunakan versi baru.

Bit Bacon
sumber
4
+1 untuk menunjukkan perilaku baik Google. Kontrasnya adalah Adobe Acrobat Reader yang setiap hari ke-2 ada beberapa patch yang tampaknya mendesak untuk dipasang, dan terus-menerus mengganggu seseorang dalam pekerjaannya.
Ingo
Saya suka pendekatan ini juga. Kelemahannya adalah ini hanya berfungsi untuk instalasi per pengguna yang tidak memerlukan peningkatan. Setelah Anda memiliki prompt elevasi, tidak masalah jika Anda memerlukan beberapa klik lagi untuk melakukan pembaruan (tidak lagi diam).
@Cosmin jika Anda tidak ingin menggunakan% appdata% Anda bisa menggunakan% ProgramData% untuk menyimpan file yang diunduh. Cara yang lebih tepat secara filosofis adalah dengan menyimpan arsip di sana, kemudian naik untuk menginstal saat program dijalankan berikutnya.
Bacon Bits
MENCINTAI jawaban ini dan saya meletakkannya di saku belakang saya (untuk saat ini, unduhan gaya "Itunes" telah menemukan daya tarik yang luas untuk alasan penghematan biaya.)
Shannon Davis
3

Anda seharusnya tidak membuat entri startup yang tidak perlu untuk memeriksa pembaruan seperti Adobe Flash Player (sulit untuk melacak semuanya, dan saya tidak dapat menemukan cara untuk menonaktifkan pemeriksaan ...) atau iTunes. Itu mengganggu pengguna (Geeks, anyways). Opsi yang lebih baik adalah memeriksa pembaruan di startup aplikasi seperti yang dilakukan Firefox .

Sederhana "Instal pembaruan?" jendela tidak akan mengganggu pengguna. Biarkan pembaruan di latar belakang saat pengguna melakukan hal-hal lain, dan kemudian secara otomatis memulai aplikasi Anda.

Pastikan untuk menyertakan opsi:

Periksa pembaruan di:

  • Log-on (jika Anda ingin mengganggu Geeks)
  • Permulaan Aplikasi ( diaktifkan secara default)
  • Setiap beberapa minggu ( dinonaktifkan secara default)

Atau yang serupa.


Jika itu sepadan dengan usaha, saya akan mengatakan untuk itu. Itu keputusanmu.

Mateen Ulhaq
sumber
2

Saya pikir Anda menginginkan pengaturan "ClickOnce".

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce adalah teknologi penyebaran yang memungkinkan Anda membuat aplikasi berbasis Windows yang memperbarui sendiri yang dapat diinstal dan dijalankan dengan interaksi pengguna yang minimal. Penempatan ClickOnce mengatasi tiga masalah utama dalam penerapan:

Kesulitan dalam memperbarui aplikasi. Dengan penyebaran Pemasang Microsoft Windows, setiap kali aplikasi diperbarui, pengguna harus menginstal ulang seluruh aplikasi; dengan penyebaran ClickOnce, Anda dapat memberikan pembaruan secara otomatis. Hanya bagian-bagian dari aplikasi yang telah diubah yang diunduh, dan kemudian aplikasi yang lengkap dan diperbarui diinstal ulang dari folder berdampingan yang baru.

Dampak ke komputer pengguna. Dengan penyebaran Windows Installer, aplikasi sering bergantung pada komponen bersama, dengan potensi konflik versi; dengan penyebaran ClickOnce, setiap aplikasi mandiri dan tidak dapat mengganggu aplikasi lain.

Izin keamanan. Penempatan Pemasang Windows memerlukan izin administratif dan hanya mengizinkan instalasi pengguna terbatas; Penerapan ClickOnce memungkinkan pengguna non-administratif untuk menginstal dan hanya memberikan izin Keamanan Akses Kode yang diperlukan untuk aplikasi.


sumber
Ini bukan pertanyaan tentang pro dan kontra klik sekali dan MSI (yang banyak kesimpulan Anda salah dan / atau tidak lengkap) melainkan pertanyaan praktik terbaik untuk solusi pembaruan otomatis.
Christopher Painter
Saya sangat menghargai informasi ini dan saya akan membagikannya kepada pengembang untuk melihat apakah dia menganggapnya sebagai opsi - mungkin dia pikir dia harus mengembangkan sendiri proses pembaruan.
Nah Christopher, bawa dengan MS, itu langsung dari MSDN. Itu juga komentar yang sangat membantu.
Ketika kode untuk teknologi penyebaran, itu tidak pernah mengejutkan saya ketika seseorang memposting di MSDN salah. Sangat sedikit dari kita para ahli yang benar-benar memahami hal ini.
Christopher Painter
2

Saya pribadi datang untuk menghargai aplikasi yang melakukan sesuatu yang mirip dengan kerangka kerja Sparkle . Saya kira itu hanya untuk Mac, tetapi pada dasarnya melakukan hal-hal berikut (dari atas kepala saya - saya berasumsi perilaku tersebut dapat disesuaikan).

  1. Periksa pembaruan (biasanya saat startup aplikasi)
  2. Jika ada, jendela terpisah ditampilkan dengan changelog yang diformat dengan baik
  3. Pengguna kemudian dapat melewati versi itu, menginstalnya atau memilih untuk diingatkan nanti
  4. Jika ia memutuskan untuk menginstal aplikasi, bilah progres ditampilkan di bawah changelog
  5. Setelah mengunduh, pengguna dapat memutuskan untuk keluar dari aplikasi dan menginstal segera atau menginstal setelah ia berhenti dari aplikasi

Menimbang bahwa Anda berbicara tentang .msi, kerangka kerja khusus ini tidak benar-benar berlaku, tetapi dalam hal ini saya lebih suka menggunakan beberapa solusi yang ada daripada menciptakan kembali roda.

sebastiangeiger
sumber
1

Saya akan mengatakan Anda benar-benar harus tahu pengguna Anda. Jika mereka cerdas dan atau memiliki minat yang kuat untuk tetap up to date, # 1 akan bekerja.

Jangan pernah meremehkan kemalasan pengguna karena ketika program mereka tidak berfungsi lagi karena mereka tidak lagi didukung, Anda akan dibanjiri panggilan telepon bantuan nanti.

Waktu akan datang dari pengembangan (# 2) atau dukungan (# 1).

maple_shaft
sumber
1

Bagaimana dengan ini?

  • Pada startup aplikasi, periksa versi baru dan (secara opsional setelah meminta pengguna) mengunduhnya.
  • Saat unduhan selesai, berikan tombol untuk pengguna yang memungkinkan untuk menginstal ulang dan memulai ulang aplikasi (tidak menggunakan dialog kecuali jika pembaruan sangat penting).
  • Pada saat aplikasi dimatikan, (opsional setelah meminta pengguna) mulai pemasang. Jika pengguna menolak untuk melakukan instalasi pada saat ini (mungkin mereka sedang terburu-buru), lakukan di waktu berikutnya sebelum aplikasi dimulai.

Anda tidak perlu mengganggu pengguna, Anda tidak perlu menutup apa pun ...

maaartinus
sumber
1

Kenapa tidak ada sesuatu di tengah?

Prompt untuk mengunduh (atau membuat opsi "unduh secara otomatis"), setelah selesai meminta untuk menginstal pembaruan yang diunduh (jalankan .msi). Dengan cara ini Anda meniadakan kelemahan # 2 (ditutup di tengah-tengah pekerjaan pengguna) namun tetap nyaman dengan biaya 1 klik lebih banyak.

Dialog " Tutup dan instal pembaruan? " Harus mudah diakses (tetapi tidak mengganggu) ketika pengguna menolak pada awalnya. Dengan memiliki "Luncurkan <nama program>?" centang pada akhir .msi akan hampir seperti # 2 dengan tidak benar-benar bekerja lagi

@ keamanan
Program di Windows modern dapat meminta izin untuk melakukan tindakan yang memerlukan hak admin (pengguna ditampilkan prompt di mana ia mengetik kata sandi admin dan kemudian memilih "ya / tidak" apakah akan memberikan izin)

NoxArt
sumber
1

Saya memiliki 124 Pegadaian yang menggunakan aplikasi desktop Manajemen Pegadaian saya. Setiap kali saya memiliki pembaruan baru, saya menyiarkan email kepada mereka untuk memberi tahu mereka tentang pembaruan dan detailnya. Kemudian mereka memiliki opsi untuk FTP dengan masuk ke situs web saya. Mereka juga memiliki opsi untuk mengembalikan pembaruan. Situs web saya juga melacak setiap versi pegadaian yang diinstal.

Frank R.
sumber