Kendi kendini güncelleyen uygulama - felsefe


15

Bu felsefi bir sorudur.

Varsayımsal bir masaüstü uygulaması ve otomatik güncellemeler (insanları bir web sitesine gitmeye zorlamak, bir güncelleme olup olmadığını kontrol etmek, bir güncelleme indirmek, yüklemek) yerine, bu ikisinden hangisi daha "en iyi uygulama" yaklaşımıdır?

  1. Gibi iTunes , yeni bir sürümünü ve istemleri yeni sürümünü indirmek için kullanıcı olmadığını denetler. Öyleyse , tam sürümü yükleyen tam yükleme yürütülebilir dosyasını (bu durumda, bir Windows Installer dosyası (.msi)) indirir (yalnızca önceki sürüme yükseltme değil - birden fazla sürüm olup olmadığını yönetmek için çok fazla) . Diyelim ki, sürüm 10.1.1 - ister taze ister yükseltme yapıyor olun, aynı dosyayı kullanıyorsunuz. İndirdikten sonra, kullanıcıya uygulamayı kapatmasını ve yükleme dosyasını kendilerinin çalıştırmasını bildirir.

  2. Diğeri gibi, yeni bir sürümü kontrol eder ve kullanıcıdan indirmesini ister, ancak sadece bir yürütülebilir dosyayı indirmek ve kullanıcıdan çalıştırmasını istemek yerine, aslında onlar için çalıştırır - açık oldukları programı kapatır, edinir dosyaları yüklemek için gerekli güvenlik.

# 2 ile ilgili sorunlar: programın diğer programları ( Outlook ve Excel ) açabileceği veya kullanıcının bir şeyin ortasında olup olmadığı konusunda programı kapatma ile ilgili birçok sorun . Ayrıca güvenlik konusunda, yüklemek için yerel yönetici erişimine ihtiyacınız var, ya sahip değilseniz? Windows'un sonraki sürümlerinde, kişinin güvenliğini geçersiz kılamazsınız.

# 1 ile ilgili sorunlar: bazı insanlar bunun son kullanıcı için çok zor, çok fazla çaba sarf edeceğine inanıyor.

Projemde 80-120 saat tasarruf edeceği ve uygulanması ve bakımı daha kolay olduğu için # 1 ile gitmeyi kesinlikle tercih ederim. Ancak, her tarafta güçlü hisseden insanlar var.

Bu tür şeyler için en iyi uygulama nedir?


Bunun felsefi olduğundan emin değilim, bana bir çözüm arıyor gibi görünüyor.

Peki burada Tasarım / Mimari sorular sormak uygun değil mi?

Benim sorum şu, # 2 neden programın kapanmasını ve yeniden başlatılmasını gerektiriyor? Bu bir güvenlik güncellemesiyse, bu anlaşılabilir bir durumdur, ancak normal bir kullanıcı bir programı günde en az bir kez kapatır ve yeniden açar, daha fazla değilse, neden arka planda yüklemezseniz, kullanıcının programı bellekteki eski sürümü kullanarak çalıştırmasına izin verin ve yeniden başlattıklarında yüklenen yeni sürümü kullanın. Telaş yok, güçlük yok.
Mike S

@Mike S: Windows'ta mümkün değil (çalışan yürütülebilir dosyaların üzerine yazamıyor) ve Linux'ta bile özellikle iyi bir fikir değil (başka bir örneği açarsanız, eski kodu çalıştıran ve yeni kodu çalıştıran bir tane olacak) - herhangi bir IPC oluyorsa, daha da kötüsü)
Dean Harding

Deneyimden: güncellemeleri kontrol ederseniz, programınızın her gün gece yarısı veya 15: 00'de yapılmasını sağlayın. Bu makul görünüyor, ancak kendi sunucularınızı DDOS ile bitiriyorsunuz. Sadece 3600 saniyeye kadar rastgele ekleyin; o kadar acil değil .
MSalters

Yanıtlar:


20

Şahsen Google Chrome'un yaklaşımını seviyorum. Başlatıcı içeren bir temel dizin ve yazılımın yüklü her sürümü için alt dizinler. Başlatıcı sadece en yüksek sürüm numarasını arar ve bunu kullanır ve gerektiğinde eski sürümleri siler. Güncelleyici görevi, sık sık yeni dizinleri indirmek ve oluşturmak için çalışır. Yeni sürümler yüklendiğinde, çalışan uygulama yeni sürümü kullanmak için yeniden başlatma ister.


4
Google'ın iyi davranışını işaret etmek için +1. Kontrast, Adobe Acrobat Reader'dır; her 2 günde bir, bazı acil olarak yüklenecek yamalar ve birinin çalışmasında sürekli bir rahatsızlık yaratan.
Ingo

Ben de bu yaklaşımı seviyorum. Dezavantajı, sadece yükseklik gerektirmeyen kullanıcı başına kurulumlar için çalışmasıdır. Bir yükseltme istemine sahip olduğunuzda, güncellemeyi gerçekleştirmek için birkaç tıklamaya ihtiyacınız olması önemli değildir (artık sessiz değil).

@ Cosmin% appdata% kullanmak istemiyorsanız, indirdiğiniz dosyaları saklamak için% ProgramData% kullanabilirsiniz. Daha felsefi açıdan doğru bir yol, arşivi orada saklamak, daha sonra programın bir sonraki çalıştırılışında yüklemek için yükseltmek olacaktır.
Bacon Bits

Bu yanıtı SEVİYORUM ve arka cebime koyuyorum (şimdilik, "Itunes" tarzı indir maliyet tasarrufu nedenleriyle geniş bir çekicilik buldu.)
Shannon Davis

3

Adobe Flash Player gibi güncellemeleri kontrol etmek için gereksiz başlangıç ​​girişleri oluşturmamalısınız (hepsini izlemek zordur ve kontrolleri devre dışı bırakmanın bir yolunu bulamıyorum ...) veya iTunes. Kullanıcıyı rahatsız eder (meraklılar, her neyse). Firefox'un yaptığı gibi uygulama başlangıcında güncellemeleri kontrol etmek daha iyi bir seçenek olabilir .

Basit bir unintrusive "Güncellemeler yüklensin mi?" penceresi kullanıcıları rahatsız etmez. Kullanıcı başka şeyler yaparken arka planda güncellenmesine izin verin ve ardından uygulamanızı otomatik olarak başlatın.

Bir seçenek eklediğinizden emin olun:

Güncellemeleri şu adreste kontrol edin:

  • Oturum açma (meraklıları rahatsız etmek istiyorsanız)
  • (Uygulama Başlatma üzerine varsayılan)
  • Birkaç haftada bir ( varsayılan olarak kapalı )

Veya benzeri.


Eğer çabaya değerse, bunun için git derim. Bu senin kararın.


2

Bence bir "ClickOnce" kurulumu istiyorsunuz.

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

ClickOnce, minimum kullanıcı etkileşimi ile kurulabilen ve çalıştırılabilen, kendi kendini güncelleyen Windows tabanlı uygulamalar oluşturmanızı sağlayan bir dağıtım teknolojisidir. ClickOnce dağıtımı, dağıtımdaki üç önemli sorunun üstesinden gelir:

Uygulamaların güncellenmesindeki zorluklar. Microsoft Windows Installer dağıtımında, bir uygulama her güncelleştirildiğinde, kullanıcının tüm uygulamayı yeniden yüklemesi gerekir; ClickOnce dağıtımı ile otomatik olarak güncelleme sağlayabilirsiniz. Yalnızca uygulamanın değişen bölümleri indirilir ve ardından tam, güncelleştirilmiş uygulama yeni bir yan yana klasöründen yeniden yüklenir.

Kullanıcının bilgisayarına etkisi. Windows Installer dağıtımında, uygulamalar genellikle sürüm oluşturma çakışmaları potansiyeli olan paylaşılan bileşenlere güvenir; ClickOnce dağıtımında, her uygulama bağımsızdır ve diğer uygulamalara müdahale edemez.

Güvenlik izinleri. Windows Installer dağıtımı yönetimsel izinler gerektirir ve yalnızca sınırlı kullanıcı yüklemesine izin verir; ClickOnce dağıtımı, yönetici olmayan kullanıcıların yüklemesini sağlar ve yalnızca uygulama için gerekli olan Kod Erişimi Güvenliği izinlerini verir.


Bu, bir kez tıklamanın artıları ve eksileri ve MSI'nın (sonuçlarınızın çoğunun yanlış ve / veya eksik olduğu) değil, otomatik güncelleme çözümleri için en iyi uygulamalar sorunuydu.
Christopher Painter

Yine de bu bilgiyi takdir ediyorum ve bir seçenek olarak düşünüp düşünmediğini görmek için geliştiriciyle paylaşacağım - belki de güncelleme sürecini kendisi geliştirmesi gerektiğini düşündü.

Christopher, MS ile ilgilen, doğrudan MSDN'den. Bu da gerçekten yararlı bir yorum.

Dağıtım teknolojilerini kodladığında, MSDN'de yayın yapan biri yanlış anladığında beni asla şaşırtmaz. Bu şeyleri gerçekten anlayan çok az uzmanımız var.
Christopher Painter

2

Ben şahsen Sparkle çerçevesine benzer bir şey yapan uygulamaları takdir etmeye geldim . Sanırım sadece bir Mac şey, ama aslında aşağıdakileri yapar (başımın üstünden - davranışın ayarlanabileceğini varsayıyorum).

  1. Güncellemeyi kontrol et (genellikle uygulama başlangıcında)
  2. Bir tane varsa, güzel biçimlendirilmiş bir değişiklik günlüğü ile ayrı bir pencere gösterilir
  3. Kullanıcı daha sonra bu sürümü atlayabilir, yükleyebilir veya daha sonra hatırlatılmayı seçebilir
  4. Uygulamayı yüklemeye karar verirse, değişiklik günlüğünün altında bir ilerleme çubuğu gösterilir
  5. İndirme işleminden sonra kullanıcı uygulamadan çıkmaya ve hemen yüklemeye veya uygulamadan çıktıktan sonra yüklemeye karar verebilir

.Msi hakkında konuştuğunuz düşünüldüğünde, bu belirli çerçeve gerçekten geçerli değildir, ancak bu durumda tekerleği yeniden icat etmekten ziyade mevcut bir çözümle tercih ederim.


1

Kullanıcılarınızı gerçekten tanımanız gerektiğini söyleyebilirim. Eğer anlayışlılarsa veya güncel kalmak için yoğun bir ilgileri varsa, # 1 çalışacaktır.

Bir kullanıcının tembelliğini asla küçümsemeyin, çünkü programları artık desteklenmediği için artık çalışmadığında, daha sonra yardım masası çağrılarıyla dolup taşacaksınız.

Zaman ya gelişimden (# 2) ya da destekten (# 1) gelir.


1

Peki buna ne dersin?

  • Uygulama başlangıcında, yeni sürümü kontrol edin ve (isteğe bağlı olarak kullanıcıdan sorduktan sonra) indirin.
  • İndirme işlemi tamamlandığında, kullanıcı için uygulamayı yeniden yüklemeye ve yeniden başlatmaya izin veren bir düğme sağlayın (güncelleme kritik değilse iletişim kutusu kullanmayın).
  • Uygulama kapanırken (isteğe bağlı olarak kullanıcıya sorduktan sonra) yükleyiciyi başlatın. Kullanıcının yüklemeyi bu noktada yapmayı reddetmesi durumunda (belki acele ediyorlar), uygulama başlamadan bir dahaki sefere yapın.

Kullanıcıyı rahatsız etmenize gerek yok, hiçbir şeyi kapatmanıza gerek yok ...


1

Neden ortada bir şey olmasın?

İndirilen güncelleştirmeyi yükleme istemini tamamladıktan sonra (.msi dosyasını yürütün) indirmeyi (veya "otomatik olarak indir" seçeneğini oluştur) sor . Bu şekilde # 2'nin dezavantajını (kullanıcı çalışmalarının ortasında kapanıyor) ve yine de 1 tıklama daha maliyetiyle konforu koruyorsunuz.

" Güncelleme kapatılsın ve yüklenilsin mi? " İletişim kutusuna kullanıcı önce reddedildiğinde kolayca erişilebilir (ancak sinir bozucu olmamalıdır). "Başlat <program adı>?" .msi'nin sonundaki onay kutusu, daha fazla çalışma ile neredeyse # 2 gibi olacak

@ security
Modern Windows'daki programlar yönetici hakları gerektiren eylemleri gerçekleştirmek için izin isteyebilir (kullanıcı, yönetici parolasını yazdığı ve sonra izin verilip verilmeyeceğini "evet / hayır" olarak seçtiği istemi görüntülenir)


1

Benim Pawnshop Yönetimi masaüstü uygulamasını kullanan 124 Pawnshops var. Yeni bir güncellemem olduğunda, onlara güncelleme ve ayrıntıları hakkında bilgi veren bir e-posta yayınlarım. Sonra web sitemde oturum açarak FTP seçeneği var. Ayrıca güncellemeyi geri alma seçeneğine de sahiptirler. Web sitem ayrıca her rehinci yüklü sürümü de takip eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.