2010-02-26 15 views
5

Windows 7'de (ör. MSI 5.0), yükleyicinizin performansını artıran MSIFASTINSTALL adı verilen bir özellik vardır. Veya DISABLEROLLBACK özelliğini ayarlayarak geri alma seçeneğini kapatabilirsiniz. Bu özellik, MSI 5.0'ın önceki sürümlerinde de kullanılabilir.Wix msi yükleme/kaldırma performansını artırma

Yükleme deneyiminizi geliştirmek için lütfen bilgilerinizi paylaşın. Ayrıca, Kaldır'ın performansını geliştirmek için doğru yolu bulamıyorum. Büyük dosyalar/klasörler (70.000'den fazla) ve 35000 gibi bileşenler kullanıyoruz. Dosya maliyetlendirme sürecinde kalıyor ve bu gecikmeyi nasıl önleyeceğimizi bilmiyoruz. Bazen bu XP veya Vista makinelerinde kaldırmak için en fazla 2 ya da 3 saat boyunca asılı

Düzenleme: yaptım dev dosya setleri vardır klasörleri sıkıştırma yoluyla yüklemek benim bazı kesmek ve Christopher Dediğim gibi bileşenler boyutu azaltılmış . Performansı büyük ölçüde geliştirdi. evet, bu konsepti yaparak MSI yükleyici modelini kaybettim ve bu yaklaşım önerilmiyor. Bununla birlikte, bunu başarmak istediğimizde ticaret yapmakta ve kullanıcı, yamaları kaldırdığımızda/güncellediğimizde dosya sürümü ayrıntılarına sahip olmak istemiyor.

cevap

4

Benzer bir durum vardı, ancak dosya sayısı biraz daha azdı, yaklaşık 25k. Bu dosyaların çoğu, bir sürümden diğerine hiçbir zaman değiştirilmeyen simgelerdi. Sadece büyük bir sürüm (2 yılda bir) bu alana bazı değişiklikler getirebilir. Bir "hızlı & kirli" çözümü bu simgeleri sıkıştırıyordu ve bu tek dosyayı yüklemeye dahil etti (bir bileşen değil, yalnızca bir dosya MSI ile yan yana). Yükleme sırasında bu ZIP, arka plan iş parçacığı içinde ayıklandı ve kaldırma sırasında simgeleri silmek için RemoveFile tablosu kullanıldı. Bu 20k simgeleri, birçok dosyaya sahip bile olsa, ayrı bileşenler olarak kurmaktan daha hızlıydı. İyi ve doğru bir çözüm, ana uygulama geliştiricilerini 20k ikonlarını 20 zip arşivine koymaya ikna etmekti. Şimdi bu 20 zip dosyaları, düzenli MSI bileşenleri olarak yüklenir ve uygulama talep üzerine bir simge ayıklamak ve önbelleği nasıl bilir.

Geri alma özelliğini devre dışı bırakmanızı tavsiye etmem. Kurulum süresinden biraz tasarruf etmenize rağmen, standart garantili geri alma seçeneğini kaybedersiniz.

Yeniden yükleme, geri alma özelliği nedeniyle yeniden yükleme işleminden daha uzun sürüyor. Anladığım şekilde, MSI, ilk kaldırdığınız zaman, her dosyanın tek bir kopyasını oluşturur, ardından her dosyayı kaldırır ve başarı durumunda her bir yedeklenmiş dosyayı bırakır. Bu nedenle, yükleme süresi yükleme süresinin yaklaşık üç katıdır. Bileşen başına 1 dosyaya sahip olmak için varsayılan bir seçenek aldığımda aynı sorunu yaşadım. Her ne kadar tavsiye edilirse de, olağanüstü bir dava ile uğraşırsanız bir takas yapmanız gerekir. Umarım bu sizin için bazı şeyleri temizler umarım.

+0

Yan, cevabını, bu konsept üzerinde daha net hale getirdiğine gerçekten minnettarım. Benim durumumda, geri alma seçeneği gerekli değildir ve şimdiye kadar, geri alma seçeneğine ihtiyacım olan böyle bir durumla karşılaşmadım. Her neyse, tüm insanların önerisini deneyeceğim. – sankar

+0

Önbelleğe alınmış simge dosyalarını nasıl kaldırabileceğinizi anlatabilir misiniz? – sky

+0

Bu durumda önbellekteki simgeler dosyaları, Windows Installer'ın yüklemediği ve hakkında hiçbir şey bilmediği dosyalardır. Bu nedenle, bir dizi "RemoveFile"/"RemoveFolder" öğesi veya özel bir eylem olabilir. İlk varyantı tercih ederim. –

2

Uygulamanızın performansını iyileştirmek için en iyi seçenek, dosya ve bileşen sayısını azaltmaktır. Performansı arttırmak için MSI'nize yapabileceğiniz bir çift ince ayar olsa da, aşırı sayıda dosya/bileşen temeldir ve yaptığınız tüm performans iyileştirmelerinde yol gösterici faktör olacaktır. Neden 70k dosyaları yüklemeniz gerekiyor?

+0

Cevabınız için teşekkür ederiz. Bunu azaltmak için bileşen faktörünü azaltmaya çalışacağım. Öğretici amaçla çok büyük miktarda html dosyası ve resim göndermem gerekiyor. – sankar

+2

Tipik yüklememde yaklaşık 15.000 dosya var ve bunlar istemci uygulamaları. Oyun endüstrisinde, yüklü birçok dosyayla sonuçlanmak çok kolay. Sunucu tarafında (özellikle web uygulamaları) on binlerce kişiye ulaşmak çok kolay. Bir keresinde bir web istemcisine Infragistrics eklemenin 5,500'den fazla dosya eklediğini gözlemledim. Bir web uygulamasını sarmaya çalışan herhangi biri hızlı bir şekilde çok karmaşık ve büyük boyutlu montajcılar ile ortaya çıkabilir. Microsoft'un "self hosted" MSDN sitesini sunan satırlarını düşünün. –