Dahili iş uygulamaları için Windows Yükleyicileri anlamlı mı?


14

Bu durumda ortak olan şey için genel bir anlayış geliştirmeye çalışıyorum, böylece daha fazla takip etmenin mantıklı olup olmadığına karar verebiliyorum.

  1. Tesisatçılar aşağıdakilerle tipik bir kurumsal ortamda hoş karşılanıyor mu?
    • Değişiklik kontrol süreci
    • Dev / QA / Üretim ortamları
    • Çeşitli alanlar (güvenlik duvarı, veritabanı, pencereler, vb.) İçin belirlenmiş dağıtım ekipleri.
  2. Bir yükleyici oluşturmak için iyi bir aday olup olmadığını görmek için bir uygulamaya uygulanabilecek bir "turnusol testi" var mı? *
    • Yükleyiciler her uygulamanın sahip olması gereken kadar basit mi?
    • Kurulumcular doğru araç mı?
  3. Geliştiricilerin yükleyicileri desteklemek için WiX gibi bir şey öğrenmelerini beklemek mantıklı mı?
    • Sürdürülebilirlik genel olarak endişe vericidir, yani bir montajcı yaratmak niş bir beceri midir?

*

Örneğin, bir üretim sunucusunda paylaşılan bir dizinde olan winform uygulamaları kümesi var. Belirli gruplar uygulamaları bu dizinden çalıştırabilir, ancak yürütülebilir dosyaları yalnızca sistem yöneticileri değiştirebilir. Geçerli konuşlandırma işlemi, yürütülebilir dosyaları ve kitaplıkları paylaşılan dizine kopyalayıp yapıştırmayı içerir.

Uygulamalar tek tek kullanıcıların makinesine yüklenmediğinden, bu uygulamaların yeni sürümlerini paylaşılan dizine dağıtmak için bir yükleyici oluşturmak mantıklı mıdır?

Düzenle--

Buradaki yanıtların sağlam bir öneri verdiğini hissettim, bu yüzden çok sayıda uygulama oluşturmam ve bunları tek tek klasörlere dağıtmam gereken mevcut projem için bulduğum şeyi paylaşmak istedim.

Web projeleri için _PublishedWebsites davranışını taklit eden _PublishedApplications adlı bir NuGet paketi buldum . Fikir, projelerinize NuGet paketini yüklemenizdir ve yapı yapılarını çıktı yolundaki bir _PublishedApplications dizinine kopyalayacak bir hedef ekler. Bu davranış, komut satırından MSBuild çalıştırılarak ve bir outdirözellik belirtilerek etkinleştirilir :

msbuild /p:Configuration=Release /p:outdir=C:\path\to\outdir MySolution.sln

Bu, aşağıdakine benzer bir dizin yapısı verecektir:

  • C: \ yol \ etmek \ OutDir
    • _PublishedApplications \
      • 1. Proje\
        • dlls, exes, etc.
      • Project2 \
        • ...

Oradan, çeşitli ortamlarda çıkarılabilen bir fermuar oluşturmak oldukça ağrısızdır.


6
Bir yükleyici sağlamanız gerekiyorsa, bir yükleyici sağlayabilir misiniz .msi? En azından, minimum ağrı ile tamamen otomatik hale getirilebilirler. (kendi güncellemelerini yapması gereken ara sıra kullanıcı için hala anlaşılırken)
ZJR

Örneğiniz için: Üretim dizinini geçici bir adla yeniden adlandırmaya çalışan, tüm uygulama dosyalarını yeniden adlandırılmış dizine kopyalayan ve daha sonra üretim dizinini eski adına yeniden adlandırır (ve her birinden sonra hata denetimi yapar! ) adım). Avantajı, biri eski sürümü kullandığı sürece, ilk yeniden adlandırma başarısız olur ve yanlışlıkla üretim ortamını yok etmezsiniz. İyi bir yönetici bu tür komut dosyalarını kendi başlarına oluşturabilir, ancak onlar için böyle bir "yükleyici" sağlarsanız diğerleri teşekkür edebilir. Gerçekten organizasyonunuza bağlıdır.
Doc Brown

@ Mark0978: Burada "Linux" veya "Windows" rant kokusunu alıyor muyum? Bu konudaki% 100 indirim.
Doc Brown

Yanıtlar:


20

Dağıtım, ilgili dosyaları bir klasöre kopyalamak ve EXE'yi çalıştırmaktan daha karmaşık bir şey gerektiriyorsa , yükleyici her zaman mantıklıdır . Ürünü doğru şekilde kurmak için atılması gereken ek adımlar varsa, bunun için iki yol vardır.

  1. Birinin takip etmesi için bir liste yazabilirsiniz. İnsanlar insan, birileri onu mahvetmek zorunda ve sonra yardım istiyor, çünkü programınız düzgün çalışmıyor.
  2. Bir bilgisayarın takip etmesi için bir liste yazabilirsiniz (yükleme komut dosyası). Bu, kullanıcı hatasının dağıtımı bozma olasılığını azaltır.

Öte yandan, yapılması gereken herhangi bir kurulum göreviniz yoksa, onlara bir zip dosyası verin. Bu bir yükleyici çalıştırmaktan daha kolaydır.


11

Wyatt programcı şapkasını çıkarır ve IT Direktörü şapkasını giyer

Bu iş uygulaması iç bir çizgi ise, o zaman sadece bir ortam hedef gerekir - dedi iş. BT başkanını arar ve konuşlandırmayı nasıl yönetmek istediklerini sorarım. BT departmanları bir süredir bununla uğraşıyorlar, bu nedenle xcopy veya MSI tabanlı seçenekler veya tamamen mevcut seçeneğiniz gibi başka bir şey için güçlü bir tercihe sahip olabilirler.

Bu departmanın en azından hareketi takdir edeceğini ve mevcut iş uygulaması ve problemler hakkında düşündüğünüzden daha fazla şey bildikleri için muhtemelen değerli bir müttefik haline geleceğini ekleyeceğim.


5
+1 Ross Wyatt'ın şapkasını ödünç alıyor ve BT ekiplerinin kurucuları sevdiğini ekliyor çünkü arkalarında " bu şey yüklü " diyen bir parmak izi bırakıyorlar .
Ross Patterson

3
BT şapkamı HTML5'te oluştur ve masaüstüne bir şeyler yüklemeyi bırak diyor!
boatcoder

8

Windows Installer uygulamaları, Windows kullanan ortamlara dahili iş uygulamalarını yüklemek için yaygın olarak kullanılır. Ayrıca, uygulamanın ömrü boyunca kullanıcının sistemlerinden güncellenmesi, yamalanması, onarılması veya temiz bir şekilde kaldırılması gerekip gerekmediğini kendinize sormalısınız. Çoğu durumda cevap "evet" tir - bu durumda düzgün yazılmış bir yükleyiciye sahip olmak uygulamanın zaman içinde bakımını yapmanın toplam maliyetini düşürebilir. Windows Installer ile çalışacak şekilde tasarlanmış Restart Manager ve WMI ve ürün ve yama envanteri işlevleri gibi başka hizmetler ve özellikler de vardır. Uygulamanız bunlardan yararlanabilirse, bu, bir yükleyici eklemenin başka bir nedenidir.

Uygulamanız için yararlı bir yükleyici geliştirmeye yönelik başlangıç ​​maliyetleri uzun vadede ödenebilir ve WiX veya InstallShield veya başka bir Windows Installer geliştirme aracı seçilerek geliştirme maliyetleri azaltılabilir.


7

Tüm mühendislik kararlarında olduğu gibi, duruma göre değişir.

Muhtemelen en önemli faktör, kurulum sürecinizin tüketicisinin kim olduğunu ve geliştirme ekibinin sahip olduğu beceriyi anlamaktır.

Dahili olduğundan, dahili bir BT departmanı tarafından konuşlandırıldığını varsayıyorum. Muhtemelen mermilere komuta edecek yabancı değillerdir.

Grafik yükleme sihirbazları, dış sunuculara doğrudan dağıtılan yazılımlar için kullanışlıdır, çünkü yapılandırmanızla ilgili basit varsayımlar artık dosya sunucusu konumları, güvenlik ilkeleri vb. Gibi geçerli değildir. Bu nedenle, her kullanıcıyı ayarları kendileri seçerek yönlendirmeniz gerekir.

Ortamınızda, bu şeyler muhtemelen geliştirme veya BT tarafından belirlenir ve nadiren değişir. Bu nedenle, dosyaları uygun yere kopyalamak için kabuk komut dosyalarını kullanmanızı öneririm. Komut dosyaları, piyasaya sürülen paketin bir parçası olarak ürününüzün içinde yer almalıdır. Ayrıca uygulamanızla birlikte sürüm kontrollü olmalıdır.

Çalıştığım yerde, tüm web uygulamamız, çoğu dosya sistemi konumları, db bağlantı bilgileri ve yapılandırma dosyalarında bulunan diğer ayarlar gibi bir grup soru soran bir InstallShield sihirbazı aracılığıyla yüklenir. Otomatikleştirmek zor. Özünde web uygulaması yüklemesi birkaç veritabanını oluşturup dosyaları kopyaladığından, Ant ya da Powershell kullanarak sadece .sql dosyalarını çalıştıran ve dosyaları kopyalayan yeni bir yükleyici yazıyorum.

Sonra herkes nasıl çalıştığını anlayabilir ve daha etkili bir şekilde koruyabilir.


Bence betikler dağıtmak ihtiyacım olan şey için uygun bir çözüm olabilir. Ben yükleyici işlevselliğini yeniden icat olabilir endişeliydi ve bu yüzden belki bir yükleyici rota gitmek daha kolay olacağını görmek için bakıyordu. Cevabınızdan, kurulumcuların aşırı derecede ağır olabileceği gibi bakımı kolay olmayabilir.
user1529856

Kesinlikle. Yükleyici işlevini yeniden icat ediyor, ancak büyük olasılıkla aşırı yüklü olan yükleyici.
Brandon
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.