GÜNCELLEME, Temmuz 2018 : Yığın akışta aşağıdaki bilgilerin son derece sıkıştırılmış bir özeti mevcuttur: MSI'nin Başlıca Faydaları ( "executive summary"
- çeşit).
Geliştirme konusunda büyük bir şirkette sürüm yöneticisi , yapım mühendisi , kurulum geliştiricisi ve uygulama paketleyicisi ve dağıtım mühendisi olarak çalıştım .
Bu, MSI'nin en iyi (ve en kötü) kavramsal ve gerçek dünya özelliklerinin bir incelemesidir. MSI dosyalarında bulunan en yaygın tasarım sorunları aşağıda ayrı bir cevap olarak sunulmuştur . Tamamlanmış gibi davranmak değil - gerçekten sadece dağınık bir "beyin dökümü" - "kitaplarda bulunamayan şeyler" olarak düşünülüyordu (muhtemelen iyi bir nedenle).
Ayrıca, bu MSDN makalesini iyi bir okuma olarak önermek istiyorum : Windows Installer: Sistem Yöneticileri için Yararları ve Uygulamaları .
Standardizasyon:
Kısacası, MSI standardizasyon ve eski kurulum teknisyeni teknolojilerinin " dağıtım kokuları " ile ilgilenmekle ilgilidir . Kötü kurulum mimarisi koleksiyonunun tümü, tekrarlanan dağıtım sorunlarına neden olan tasarımları tasarlar.
Genel MSI bir sağlar kapsamlı, standardize edilmiş bir çerçeve yükleyici için en önemlisi de kaldırma içerir ve yerleşik özellikleri ve seçenekleri Sessiz sefer ile standartlaştırılmış GUI edilebilir uzaktan tetiklenen .
Bu özellikler tek başına kaldırma ve sessizce çalışan sessizce işlem gören önceki kurulum teknolojilerinde büyük bir gelişmedir - belki de Active Directory veya Microsoft SCCM (özel olarak SMS)gibi özel uzaktan yönetim araçları ile güvenilir bir uzaktan paket yönetimi ile birlikte kurumsal dağıtım için en önemli özelliklerdir. IBM Tivoli , CA Unicenter ve benzeri.
Birisi bu cevabın önceki bir versiyonunu kopyaladı . Belki daha hızlı bir okuma?
Eski Yükleyiciler "Dağıtım Kokuyor"
MSI, eski konuşlandırma kokularını tasarıma göre aktif olarak engeller . Bu konular daha sonraki bölümlerde ele alınmaktadır, ancak hızlı bir liste olarak, eski yükleyiciler ve daha eski dağıtım teknolojilerinde en çok tanınan konular şunlardı:
- 1) Bazen indirilen ve üzerine yazılan dll-cehenneme ilişkin kaygı duyulan paylaşılan ve versiyonlanmış dosyaların üzerine yazarlar.
- 2) genellikle yükleyiciyle birlikte verilen uygun bir kaldırma yordamı yoktu ya da özellikle sessizce çalıştırılırsa düzgün ve güvenilir bir şekilde tamamlanmadı. Kurumsal SOE yönetimi için bu çok büyük bir konudur
- 3) sessiz kurulum nadiren uygun şekilde desteklenmiştir. Güvenilirlik zayıftı ve sık sık yükleme seçimlerini iletişim kutusu seçimleriyle kaydetmek zorunda kalıyordu ve bu hata hata diyalogları ya da orijinal çalışmada kaydedilmeyen uyarı diyalogları gibi beklenmeyen durumlarla iyi başa çıkmıyordu.
- 4) yükleyici yüklü olanın kaydını tutmadı ve bu nedenle hala yükleyici tarafından yüklenen sürümlerin olup olmadığını kontrol etmek için diskteki dosyaları doğrulamanın otomatik bir yolu yoktu.
- 5) çalıştırılabilir kurulum için öngörülemeyen, güvenilmez ve standart olmayan komut satırı parametreleri kullandılar
- 6) standart olmayan komut satırından ve standartların bulunmamasından sonra, montajcıları kurumsal dağıtım için gereken spesifik değerlerle güvenilir ve öngörülebilir bir şekilde özelleştirmek zordu.
- 7) normal kullanıcılar bu kurulumları çalıştıramazlardı ve sık sık geçici yönetici haklarıyla uğraşmak zorunda kalıyorlardı (eğer yeterliyse "çalıştır" komutunu kullanın ya da yönetici olarak giriş yapın, kurun ve çıkış yapın - bu tam giriş ve profil oluşturma kurulumun tamamlanması için bazen gerekliydi)
- 8) setup.exe yükleyici genellikle ediyorum uygun bir hata kodu vermemelidir veya başarı kodu ve bazen hemen çıkmak istiyorum ve bitireceğini başka sürecin vuruşu tamamlanmış yükleme eğer zor belirlemek için yapım yüklemek - özellikle toplu aracılığıyla dosya
- 9) çoğu setup.exe dosyası, dosyaların çıkarılmasına izin verdi, ancak güvenilir, öngörülebilir bir şekilde değil - genellikle bunu gerçekleştirmek için doğru anahtarları bulmak için çok zaman harcamanız gerekebilir
- 10) günlüğü genellikle yoksul ve bazı araçlar oldukça gelişigüzel. Günlük dosyaları ile hata ayıklama nadiren netlik üretti, ancak biraz yardımcı oldu
- 11) yükleyicinin ne yaptığı konusunda hiçbir şeffaflık yoktu ve başarısız bir kurulumdan sonra değişiklikleri geri almak için geri dönüşü olmadı ya da güvenilmez geri dönüş yoktu.
- 12) oldu hiçbir endüstri standardı yolu arasında paylaşılan çalışma zamanı bileşenleri dağıtma onlar sistem bileşenlerini, üçüncü parti bileşenler veya kendi işletim olup olmadığını
Liste, birçok diğer önemli ve tanınmış dağıtım hatasıyla devam ediyor . Açıkça kurumsal dağıtım dünyasında bu sorunların en sık ortaya çıktığı ve standartlara uygun bir MSI dosyası oluşturmak için eski bir yükleyicinin disk ve kayıt defteri tarama teknolojileriyle yakalandığı " uygulama yeniden paketleme " işiyle sonuçlandı. güvenilir dağıtım için.
Uygulama yeniden paketleme bir olan uzman iş ve genellikle bilgili insanlar tarafından doğru yapılırsa mükemmel kalitede MSI dosyaları sonuçlanır, ancak çalışmak için belirli uygulamalar için etkileşimli çalıştırılmalıdır nedeniyle karmaşık kayıt mantığına tüm uygulamaları yeniden paketlemek için mümkün değildir.
MSI Yararları - Kısa Özet
Gelen sade bir dille MSI gerçekten önemli faydaları (belirli bir sırayla) şunlardır:
- 1) kaldırma , aktif olarak devre dışı bırakılmadıkça her paket için her zaman kullanılabilir
- 2) Bu, ayrıntılı olmasına rağmen, büyük ve standart olan loglama için aynıdır (WiLogUtl.exe gibi araçlar log dosyalarını analiz etmek için kullanılabilir)
- 3) bir MSI dosyasının yaptığı şey (yarı) şeffaf veya çoğu zaman "denetlenebilir" dır. İstisna özel eylemlerdir - (aşağıdaki şeffaflık bölümüne bakın)
- 4) kurulum özelleştirme standart bir şekilde yapılır ( dönüştürür )
- 5) kurulum, Active Directory reklamı, grup politikası veya uzaktan yönetim yoluyla yükseltildiği için geçici yönetici haklarıyla uğraşmaya gerek yoktur . Burada bazı nitelikler. Ayrıca grup ilkesi nesnesi editörünün bu ekran görüntüsünü görebilirsiniz .
- 6) sessiz yükleme / kaldırma yönetim araçları aracılığıyla veya msiexec.exe kullanarak iyi çalışıyor
- 7) başarısız kurulumlar için tam geri alma desteği var . Kutuya manuel olarak kurarsanız, bilmeniz gereken bazı özellikler vardır .
- 8) MSI dosyası bir veri tabanı şemasına uyduğundan tutarlılık ve mantıksal geçerliliği için hem incelemeye hem de doğrulamaya kendisini ödünç verir ( bkz. Doğrulama örneği )
- 9) güncellemeler standartlaştırılmış türlerdir, ancak deneyimsiz paketleyiciler için karmaşık ve sıklıkla hataya açıktırlar
- 10) dosyaların ekstraksiyon msi dan yerleşik bir özellik (iyi bir göz gezdirme için bağlantılı makale kontrol) 'dir
- 11) Windows Installer komut satırı, msiexec.exe , kurulum sırasının nasıl yapılması gerektiğine dair çok hassas bir kontrol sunar ve tüm seçenekler, tüm standartlarla uyumlu MSI dosyalarıyla çalışır (günlük düzeyini ayarlayın, sessiz / etkileşimli / yarı-sessiz çalışın) , kurulum parametrelerini ayarlayın, dönüştürmeleri uygulayın ...).
- 12) birleştirme modülleri , çoklu MSI paketleriyle paylaşılan dosyaları teslim etmek için MSI mekanizmasıdır. Derleme zamanında herhangi bir MSI paketi ile birleştirilebilen, tüketilebilir bir modül veya kurulum mantığı paketidir. Wix, Wix dosyalarının kullanımı ile bu konsepti genişletti ve geliştirdi - bence modülleri birleştirmek için daha üstün bir kavram - özellikle kendi dosyalarınız için (yani OS dosyaları değil)
- 13) Windows kurulum motorunun kendisi , kurulum sırasında sürümlenmiş veya değiştirilmiş dosyaların üzerine yazılmasını önleyen bir mekanizmaya sahiptir . Bu oldukça karmaşık bir dosya değiştirme mantığı ile kontrol edilir . Etkili ve iyi olsa da, birçok geliştirici, yükseltme yaparken değiştirilmiş yapılandırma dosyalarının üzerine yazamama sorunuyla karşı karşıya kaldığı için, mantık kendi başına bir sorun olabilir. Bu sorunların çözümü, genel yayılma karşıtı kalıpları önlemek için uygulama tasarımında küçük değişiklikler olur - bu, kendi başına büyük bir tartışmadır.
In gerçek dünyada buldum az başarılı yönlerini kapsayacak şekilde yama , (çok karmaşık) MSI-GUI (oldukça karmaşık düz özellikler, esneklik yoksun), esneklik (yol açabilir kendini tamir sorunları tekrar hata ayıklamak zor ve) genel karmaşıklığı Yeni başlayanlar için teknolojiyle ilgilenme (zaman zaman temel işlemlerin yüksek karmaşıklığı - örneğin, yükseltmeler, GUI ve etkileşimli detaylar beklenmedik sonuçlara neden olur…). Kurulum işleminin hızı, MSI’nin ek yükünün artması nedeniyle de önemli ölçüde yavaşladı. MSI kurulum hızını artırmak için bazı ipuçlarına bakın .
Metnin geri kalanı MSI'nin bu yönlerinden bazıları ile daha ayrıntılı olarak ilgilenmektedir.
Şeffaflık (açık yükleyici formatı)
Bir MSI dosyası, temel olarak bir COM yapılı depolama dosyası olarak depolanan soyulmuş bir SQL-Server veritabanıdır - esasen bir dosyadaki bir dosya sistemi veya veri akışları topluluğudur. Bu kullanılan dosya türüdür Microsoft Office dokümanları ve bir verir standart bir biçim edilebilir gözden ve teftiş - bir büyük sorunu büyük şirketler için.
Derlenmiş özel eylemler hariç, bir MSI dosyası beyaz bir kutudur . Kurulum, sistem genelinde ağ ayarları gibi çılgınca bir şey değiştirirse, gerçekte uygun araçları kullanarak görebilirsiniz . Önemli istisna, kara kutu olan özel eylemlerdir . Windows logosu gereksinimleri , ne yaptıklarını açıklamak için özel eylemlerin açıklamasını gerektirir, ancak bu genellikle kurulum geliştiricileri tarafından göz ardı edilir. Umarım Wix'in gelişmesi bunu iyileştirir.
Bu tür bir derlenmiş özel işlemlerin gerçekte teknik anlamda ne yaptığını belirlemek için, bir kurulum yakalama gereklidir. Bu benim deneyimimde neredeyse hiç yapılmıyor. Yazılımın kurumsal dağıtım için onay alması gerekiyorsa, satıcıyla iletişim kurmak daha yaygındır ve ardından yalnızca kurulumu değil, kullanımını engelleyen uygulamanın kendisi de olabilir.
Özelleştirilebilirlik (dönüşümler)
Bir MSI, bir kuruluşun gereksinimlerine ve standartlarına uyacak şekilde dönüşümler yoluyla özelleştirilebilirken, satıcının yükleyici güncelleştirmeleriyle birlikte çalışabilirlik sağlar. Yükleyicinin kendisini değiştirmezsiniz, kişiselleştirmenizi dönüşümü (.mst dosyası) ( ayrı ayrı bir veritabanı parçası veya isterseniz işlemi değiştirir ) adı verilen kuruluşa özgü bir dosyada yaratırsınız . Özel eylemleri devre dışı bırakmakta ve genel olarak değiştirmekte, yükleyicideki herhangi bir şeyi geçersiz kılmakta veya devre dışı bırakmakta özgürsünüz ve dosyalar dahil yeni şeyler bile ekleyebilirsiniz. Dönüştürme dosyaları bazen bir MSI dosyasını farklı dillere yerelleştirmek için de kullanılır. Çeşitli dönüşümler tek MSI uygulanabilir, burada a, örnek ile kesilmiş yolları :
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
Hızlı Parametre Açıklama:
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
Yönetim ve raporlama
Windows Installer , bir ürünün kayıt defterine yüklediği tüm öğelerin kapsamlı bir veritabanını tutar ( HKEY_CLASSES_ROOT \ Installer - burada hiçbir şeyi doğrudan değiştirmeyin! Bu uzmanlar için de geçerlidir).
Bir ürünün yüklü olup olmadığını, hangi özelliklerin yüklü olduğunu ve hangi dosya sürümlerinin yüklü olduğunu güvenilir bir şekilde belirleyebilirsiniz. Ek olarak, eğer varsa, temel ürüne uygulanan yamaların bir listesini alabilirsiniz. Microsoft SCCM , IBM Tivoli , CA Unicenter vb. Gibi çeşitli komut dosyası, yapılandırma ve yönetici araçları kullanarak API’nin Win32, COM veya .NET’i destekleyen bu veritabanına erişebilirsiniz .
Güvenlik (geçici yükseltilmiş haklar)
MSI ayrıca, sınırlı bir kullanıcının kurulumu için yönetici hakları gerektiren bir ürünün kurulumunu tetiklemesine izin veren "yüksek haklar" ilkelerini de kapsar . Bu, bir yöneticinin, tüm iş istasyonlarına gerçekte yüklemeden, kullanıcıların yükleyicileri kullanıcılara sunmasını sağlayan " reklamcılık " özelliğinin bir parçasıdır . Yükleyicinin kendisi, bu yükseltilmiş haklar kavramının doğru çalışması için birkaç çekirdek hesapta doğru bir şekilde yazılmalıdır. Kullanıcılar ürünün kurulumunu kendileri tetikleyebilir veya kurulum, SCCM, Tivoli, Unicenter (normalde daha büyük şirketler) gibi özel bir dağıtım sistemi tarafından kontrol edilebilir. İşlerin yürümesi için geçici yönetici haklarıyla uğraşmanıza gerek yok Bu genellikle eski montajcılar için de geçerlidir.
Kapsamlı kurulum veritabanı ayrıca kurulu yamalar hakkında genel bilgi sahibi olmanızı ve dolayısıyla otomasyon ve yönetici araçlarıyla güvenlik açıklarını tespit etmenizi sağlar.
onaylama
MSI dosyaları, bir takım iç tutarlılık kurallarına ( ICE olarak adlandırılır ) uygun olmasını sağlamak için doğrulama kuralları ile kontrol edilebilir.). Şirketler özel kurumsal kural ve gereklilikleri uygulamak için kendi ICE çeklerini oluşturabilirler. Bu, KG ile büyük ölçüde yardımcı olur. Doğrulamanın mümkün olmasının nedeni, ilişkisel veritabanlarının kendi kendine referans niteliği ve ilişkili veritabanı şemasıdır. Veri tabanı, yabancı anahtarlar, veri tipleri, alan genişliği, şema sürümü, vb. Konularında dahili olarak tutarlı ve kendi şemasıyla uyumlu olmalıdır. Doğrulama ayrıca bunun ötesine geçer ve paketteki orijinal mantıksal hataları ve hataları saptayabilir , sadece biçimlendirme değil, kusurları da yazın. Örneğin, hatalı hedef hedeflere dağıtılmakta olan dosyaları veya dosya türlerini algılayabilir.
Esneklik (Kendi kendine onarım)
Yönetici yüklemek , Windows yükleyici özelliği (bir MSI dan kaynak dosyaları ayıklamak için standart bir yol sağlar burada bu konuyla ilgili bazı ek bilgiler ). Bu kaynak dosyalar daha sonra bir paylaşımda bulunabilir ve kurulum için tüm iş istasyonlarında kullanılabilir. Bu, CD veya benzeri bir kurulum ortamı talep etmeden tamamlanmış işlemlerin onarımı, kaldırılması ve değiştirilmesini sağlar. Bu, özel durumlarda eski sürüm kaynak dosyalarına erişim gerektirebilecek işlemleri yamalamak ve güncellemek için özellikle önemlidir.
Bu esneklik özelliği ile ilgili ortak sorunlar da vardır. Çoğu yönetici , hiç durmadığı gibi , döngüsel kendi kendine onarım döngüleri olan makineler deneyimlemiştir . Bu sorunun nedenlerinin uzun bir listesi için linki takip edin. Ve yine, işte okunması daha kolay olabilecek daha kısa bir versiyon .
Geri Alma
Bir MSI dosyasının yüklenmesi normalde bir geri yükleme noktasının oluşturulmasını tetikler . Ayrıca, yükleme sırasında değiştirilen veya üzerine yazılan tüm dosyalar ve kayıt öğeleri, yükleme işlemi tamamlanamazsa, özel eylemlerde yapılan değişiklikleri engellediğinde kaydedilir ve geri yüklenir.
Özel eylemler, Windows logosu uyumluluğu için kendi geri alma desteğini uygulamalıdır. Bu genellikle göz ardı edilir, ancak ana özel eylem tarafından yapılan değişiklikleri geri almak için ikinci bir özel eylem oluşturmayı içerir.
Geri alma, kurulumun başarısız olmasına rağmen iş istasyonunun sabit bir durumda bırakılmasını sağlar. Gerçek geri alma komut bir saklanır gizli klasörde sistem sürücüsünde doğrudan - genellikle C: \ Config.msi ve uzantıları .RBS ve .RBF ile dosyaları içeren - Geri Alma Senaryo Files . Kötü tasarlanmış MSI dosyalarının, Windows'un yerleşik özelliklerini ihlal edebileceğini umduğunuzdan, daha fazla ayrıntı için bu konudaki diğer yazıma bakın.
Geri alma işlemini devre dışı bırakmanın ve kurulumu hızlandırmanın yolları vardır. Genel olarak önerilmez, ancak burada MSIFASTINSTALL özelliği ve DISABLEROLLBACK ile ilgili ayrıntılar bulunmaktadır . Bu karmaşık bir özelliktir, ancak işte hızlı bir geri alma özeti .
Yama ve Güncellemeler
Oldukça karmaşık olsa da, Windows yükleyicideki yama tamamen yönetilir ve sisteme kaydedilir; böylece sistem güvenlik durumu yüklü olanı denetleyerek belirlenebilir. Güncellemeler, birkaç temel değişkene standartlaştırılmıştır ve bu, ilgili karmaşıklığı ele alabilmeniz koşuluyla, güncellemelerin daha yüksek bir kesinlikte yapılmasını sağlar. Dağıtım sistemleri hangi güncellemelerin başarısız olduğunu ve nedenini rapor edebilecektir.
Sübjektif bir görünümde yama 2 temel kullanım için iyi çalışır : 1 ) teslim edilen ürünler için küçük düzeltmeler ve 2 ) ürünlerin temiz kaldırılmasını önleyen hatalı kaldırma sırasını düzeltmek için kurulu bir ürünü yamalama.
Bir düzeltme eki, zaten çalışmakta olan bir güncelleştirme için yalnızca bir teslim mekanizmasıdır . Gibi sadece orijinal kurulum kendisinden daha karmaşık ve hata eğilimli bir kapsayıcıdır . Bir düzeltme ekinin bir numaralı kuralı , orijinal MSI'dan daha küçük olması gerektiği veya bir düzeltme eki vermek için açık bir neden olmaması gerektiğidir. Bir yama, birden fazla ürün versiyonunu hedefliyorsa hızla büyüyebilir.
Günlük (gerçekten ayrıntılı)
Windows Installer, neredeyse aşırı ayrıntılı olsa da, önceki enkarnasyonlardan oldukça üstün olan standart bir kayıt özelliği sunar . Günlük dosyaları günlük analizörleri kullanılarak deşifre edilebilir ve gereksiz bilgi içeren çok büyük günlük dosyalarının oluşturulmasını önlemek için özel günlük seviyeleri kullanılabilir. Hata ayıklama amacıyla ayrıntılı günlük kaydı son derece yararlıdır. Bir MSI günlük dosyasını okumanın iyi bir yolunu bulmak için Rob Mensching'in bloguna bakın (temel olarak günlük dosyasında " değer 3 " ü arayın ). Ayrıntılı günlük kaydı yapan örnek bir komut satırı:
msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"
Bu makalesinde, Robert Macdonald gelen Windows Yükleyici Ekibi : Çok MSI günlük bir pratik bakış olarak önerilmektedir nasıl Windows Installer Günlükleri'ni yorumlama .
Sonuç
Windows Installer hakkında her şey iyi değil . Onun karmaşıklığı baffling olabilir zamanlarda, ancak dikkate Yukarıdaki avantajların listesini alırken büyük şirketler için MSI dosyaları büyük ölçüde dağıtım diğer herhangi bir şekilde üstündür.
Yeni yükleyici paradigması (büyük SQL ifadesi)
Yeni " paradigmayı " anlamak için, MSI'nin sabit bir olaylar dizisinden ziyade hedef sistemde neler olacağını açıklayıcı bir açıklama olarak tasarladığını anlamak önemlidir . Sanırım bunu büyük bir SQL ifadesi olarak düşünebilirsiniz . Örneğin, bir INI dosyasına eklenmesini veya değiştirilmesini istediğiniz öğeleri beyan ediyorsunuz. Kurulum devam ederken değişiklikler izlenir ve kurulum başarısız olursa değişikliklerin geri alınabilmesi için geri alma kullanılabilir. Bu gerçekten " automagic " gibi çalışır ve doğru yapıldığında güvenilirdir.
Özel Eylemler (olağan şüpheliler)
Bu bir olan dev baş ağrısı için deneyimli MSI geliştiriciler insanlar kompleksi güvenmek görmek için, daha iyi ile uygulanan işlevsellik için güvenilmez özel eylemler yerleşik MSI özellikleri. Tüm MSI hatalarının ve geri alma sorunlarının önemli bir kısmına hatalı özel eylemler neden olur ve diğer çoğu hata MSI tasarımının hatalı kullanımından kaynaklanır (ortak MSI hatalarının listesi için ayrı cevaba bakınız).
Yerleşik MSI özelliklerine ek olarak, Wix - MSI dosyalarını derlemenin XML yolu gibi yeni çerçeveler sayesinde giderek daha fazla özel işlevsellik mevcuttur , bu nedenle çoğu işlem için karmaşık özel eylem mantığına daha az ve daha az ihtiyaç vardır.
MSI , ini dosya ayarlarının, yazı tiplerinin, ortam değişkenlerinin, kayıt defteri anahtarlarının, COM bilgilerinin, kısayolların, dosya uzantılarının, başlatma koşullarının, GAC kurulumunun, ODBC'nin ...
WIX desteği ile ileri gider çok gelişmiş özellikleri , bu tür bir SQL sunucusu uzantıları olarak yüklemelerini ve yapılandırmayı, performans sayaçlarını, DirectX denetleme ve diğer oyun ilgili görevleri IIS, .NET yerel görüntü oluşturma, COM +, sürücüler, güvenlik duvarı kuralları, PowerShell uzantıları, uygulama kapanış, kullanıcıların, grupların, hisse senetlerinin ve çok daha fazlasının yönetimi. Başa çıkmak için bir miktar müdahil olmakla birlikte, kendi özel eylemlerinizden çok daha güvenilir.
Mümkünse Özel Maliyetlerden Her Ne Kadar Maliyetle Korunmalı
Perspektifi ortaya koymaya çalışmak için: bu yerleşik ve hazır çözümler mevcut en iyi dağıtım uzmanları tarafından yapılır ve binlerce, on binlerce veya belki de milyonlarca kullanıcı tarafından test edilir (MSI'deki yerleşik ürünler için) kendisi) bulunur. Gerçekten kendi özel eylemlerinizi yaparak daha iyisini yapabileceğinizi düşünüyor musunuz? Özel bir işlem kullanmak nadir bir olay olmalı ve yüklediğiniz ürün için benzersiz bir şey elde etmek için mutlaka gerekli olmalıdır . Ayrıca, tamamen ilgili olan geri alma desteğini de yazmalısınız.
Özel bir eylem yazmak neredeyse her zaman bir hatadır , ancak gerçekten de esnekliğe ihtiyaç duyduğunuzda gerçek durumlar vardır. Her zaman olduğu gibi, savaşlarınızı iyi seçmek önemlidir. İlk başta eğlenceli bir görev olabilir, ancak beklenmeyen birçok sorunla karşı karşıya kalacaksınız ve çok fazla zaman harcayacaksınız. Bunu çok ciddiye demek istiyorum. Kurumsal kullanım için kendime bir C ++ özel eylem paketi yazdım (hataya açık VBScript özel eylemlerini ortadan kaldırmak için) - parkta yürüyüş yok ve kodlama dünyada en zor olmasa da, hata ayıklama ve test ve Gerçek bir MSI dosyasına bağlanma, son derece ilgili olanlardan başka bir şey değildir. Hangi hazır seçeneklerin kullanılabilir olduğunu araştıran bir süre, haftalarca süren geliştirme çalışmalarından tasarruf etmenizi ve çok daha fazla dağıtım güvenilirliği sağlar.
Uygulama Başlatma Sırasını Kullan
Çok önemli bir nokta, öngörülebilir bir çalışma zamanı içeriğine ve iyi bir hata işlemeye sahip olduğunuzda ve uygulamada yalnızca bir kez çalıştırılan ve çok karmaşık kimliğe bürünme , sıralama , koşullandırma ve çalışma zamanı özelliklerine sahip olan kurulumda olmadığınızda uygulama başlatma sırasında çok fazla uygulama yapılandırması yapılması gerektiğidir. karmaşıklık .
Kurulumunuz uygulamayı yapılandırmamalı, ilk çalıştırmada uygulamayı yapılandırmaya hazırlamalıdır . Özellikle kurulumunuz, yükseltilmiş haklar gerektiren tüm ayarları yazmalıdır - HKLM'ye yazma, hizmetleri kaydetme, makine başına yollara yükleme ve bir uygulamanın normal kullanıcı haklarıyla tek başına yazamayacağı şeyler.
Bir kurulum geliştiricisiyseniz, özel kurulum eylemleri yazmak yerine uygulama başlatma sırasını kodlamayı dahil etmeyi teklif etmelisiniz . Başka bir şey olmazsa, sizin gibi görünmekten kaçınmak için bir başkasına "parayı" iletmeye çalışıyorsunuz. Bu lansman sırasında QA personelinin test etmesi için yardım alması daha kolay olan çok daha güvenilir ve test edilebilir bir kod yazabilirsiniz (genellikle uygulama testlerinin yanı sıra uygulama testlerini de anlamıyorlar).
Kurulum karmaşıklığı
Kurulum karmaşıklığının özü, hataların kümülatif olduğu (sadece hızlı bir yeniden derleme değil, bir teslimat işlemini yönetiyorsunuz), hataların hata ayıklanması çok zor (hataların meydana geldiği sistemlere erişim yok) ve hedef sisteme odaklanır. devletler, hayal edilebilecek hemen hemen her yönden farklılık gösterir . Lütfen bu karmaşıklık ve hedef sistemlerin şok edici bir şekilde nasıl temkinli olabileceği hakkında daha ayrıntılı bir tartışma için bu cevaba bakınız: Windows Installer ve WiX oluşturulması ve Dağıtım Karmaşıklığı (aşağıya bakınız).
WiX (bazı amaçlar için en iyi MSI çözümü)
MSI dosyalarını derlemenin yeni XML tabanlı yolunun açıklaması için bu WiX hızlı tanıtımını okuyun . Metin tabanlı kaynak dosyaları, öncekinden çok daha iyi kaynak kontrolü sağlar. Bu, şiddetle tavsiye edilen ücretsiz, açık kaynaklı bir araç takımıdır .
Not : MSI dosyalarındaki genel tasarım problemlerinin hızlıca gözden geçirilmesi için, iş parçacığının başka bir yerine bakın - bu çok eksik ama bir okumaya değer olmalı. Bunu% 100 ilgili olmadığı için bu cevaba eklemek istemedim, ama gerçek dünya kullanımı için bu çok önemli bir konudur.
Sys-adminleri için bazı temel MSI bilgileri:
(utanmaz "terfi" affet - kolay erişim ve erişim için)
Aşağıda, ağlarındaki dağıtımı denetleme çabalarında sistem yöneticilerine yardımcı olabilecek konulara birkaç bağlantı verilmiştir:
Özel nasıl yapılır konuları:
Kavramsal Konular / En İyi Uygulama: