Sind Windows Installer für interne Geschäftsanwendungen sinnvoll?

14

Ich versuche, ein allgemeines Verständnis für das zu entwickeln, was in dieser Situation häufig vorkommt, damit ich entscheiden kann, ob es sinnvoll ist, es weiter zu verfolgen.

  1. Sind Installateure in einer typischen Unternehmensumgebung mit den folgenden Eigenschaften willkommen?
    • Kontrollprozess ändern
    • Entwicklungs- / Qualitätssicherungs- / Produktionsumgebungen
    • Designated Deployment-Teams für verschiedene Bereiche (Firewall, Datenbank, Windows usw.).
  2. Gibt es einen "Lackmustest", der auf eine Anwendung angewendet werden kann, um festzustellen, ob er ein guter Kandidat für die Erstellung eines Installationsprogramms ist? *
    • Sind die Installationsprogramme so einfach, dass jede Anwendung eine haben sollte?
    • Sind Installateure überhaupt das richtige Werkzeug?
  3. Ist es vernünftig zu erwarten, dass Entwickler etwas wie WiX lernen, um Installer zu unterstützen?
    • Die Wartbarkeit im Allgemeinen ist ein Problem, dh ist die Schaffung eines Installateurs eine Nischenkompetenz?

*

Zum Beispiel habe ich eine Reihe von Winform-Anwendungen, die sich in einem freigegebenen Verzeichnis auf einem Produktionsserver befinden. Bestimmte Gruppen können die Anwendungen in diesem Verzeichnis ausführen, aber nur Systemadministratoren können die ausführbaren Dateien ändern. Der aktuelle Bereitstellungsprozess umfasst das Kopieren / Einfügen der ausführbaren Dateien und Bibliotheken durch einen Administrator in das freigegebene Verzeichnis.

Ist es sinnvoll, ein Installationsprogramm für die Bereitstellung neuer Versionen dieser Anwendungen im freigegebenen Verzeichnis zu erstellen, da die Anwendungen nicht auf dem Computer der einzelnen Benutzer installiert sind?

Bearbeiten--

Ich hatte das Gefühl, dass die Antworten hier gute Ratschläge gaben, und wollte daher mitteilen, was ich für mein aktuelles Projekt entwickelt hatte, in dem ich eine große Anzahl von Anwendungen erstellen und diese in einzelnen Ordnern bereitstellen musste.

Ich habe ein NuGet-Paket namens _PublishedApplications gefunden , das das Verhalten von _PublishedWebsites für Webprojekte nachahmt. Die Idee ist, dass Sie das NuGet-Paket in Ihre Projekte installieren und ein Ziel hinzufügen, das die Build-Artefakte in ein _PublishedApplications-Verzeichnis im Ausgabepfad kopiert. Dieses Verhalten wird aktiviert, indem MSBuild über die Befehlszeile ausgeführt und eine outdirEigenschaft angegeben wird:

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

Dadurch erhalten Sie eine Verzeichnisstruktur, die der folgenden ähnelt:

  • C: \ path \ to \ outdir
    • _PublishedApplications \
      • Projekt 1\
        • dlls, exes, etc.
      • Projekt2 \
        • ...

Von dort aus ist das Erstellen eines Reißverschlusses, der in den verschiedenen Umgebungen extrahiert werden kann, ziemlich schmerzlos.

user1529856
quelle
6
Wenn Sie ein Installationsprogramm bereitstellen müssen, können Sie ein .msiInstallationsprogramm bereitstellen ? Zumindest diese können mit minimalem Aufwand vollautomatisiert werden. (
Obwohl
Zu Ihrem Beispiel: Ich habe ein Skript, das versucht, das Produktionsverzeichnis in einen temporären Namen umzubenennen, alle Anwendungsdateien in das umbenannte Verzeichnis kopiert und dann das Produktionsverzeichnis wieder in den alten Namen umbenennt (und nach jedem Versuch eine Fehlerprüfung durchführt). ) Schritt). Der Vorteil ist, dass, solange jemand die alte Version verwendet, die erste Umbenennung fehlschlägt und Sie die Produktionsumgebung nicht zufällig zerstören. Ein guter Administrator kann solche Skripte möglicherweise selbst erstellen, aber andere sind möglicherweise dankbar, wenn Sie einen solchen "Installer" für sie bereitstellen. Hängt wirklich von Ihrer Organisation ab.
Doc Brown
@ Mark0978: rieche ich hier ein "Linux" vs. "Windows" schimpfen? Dies ist 100% off Thema hier.
Doc Brown

Antworten:

20

Ein Installationsprogramm ist immer dann sinnvoll, wenn für die Bereitstellung etwas Komplizierteres erforderlich ist, als die entsprechenden Dateien in einen Ordner zu kopieren und die EXE-Datei auszuführen. Wenn zusätzliche Schritte erforderlich sind, um das Produkt ordnungsgemäß einzurichten, haben Sie zwei Möglichkeiten.

  1. Sie können eine Liste schreiben, der jemand folgen kann. Menschen sind Menschen, jemand muss es vermasseln und ruft Sie dann an, um Hilfe zu bitten, weil Ihr Programm nicht richtig läuft.
  2. Sie können eine Liste schreiben, der ein Computer folgen soll (ein Installationsskript). Dadurch ist es weniger wahrscheinlich, dass Benutzerfehler die Bereitstellung beeinträchtigen.

Wenn Sie hingegen keine Setup-Aufgaben haben, die ausgeführt werden müssen, geben Sie ihnen einfach eine Zip-Datei. Das ist einfacher als das Ausführen eines Installationsprogramms.

Mason Wheeler
quelle
11

Wyatt nimmt seinen Programmiererhut ab und setzt seinen Director of IT-Hut auf

Wenn es sich um eine interne Geschäftsanwendung handelt, müssen Sie sich nur auf eine Umgebung konzentrieren - das Unternehmen. Ich würde den IT-Leiter anrufen und ihn fragen, wie er die Bereitstellung verwalten möchte. IT-Abteilungen beschäftigen sich bereits seit einiger Zeit damit, sodass sie möglicherweise eine starke Vorliebe für xcopy- oder MSI-basierte Optionen oder etwas ganz anderes wie Ihre aktuelle Option haben.

Ich füge hinzu, dass die Abteilung die Geste zumindest zu schätzen weiß und wahrscheinlich zu einem wertvollen Verbündeten werden könnte, da sie wahrscheinlich mehr über die bestehenden Branchenanwendungen und -probleme wissen, als Sie denken.

Wyatt Barnett
quelle
5
+1 Ross leiht sich den Hut von Wyatt und fügt hinzu, dass IT-Teams Installateure lieben, weil sie einen Fingerabdruck hinterlassen, der besagt, dass " dieses Ding installiert ist ".
Ross Patterson
3
Meiner IT-Abteilung zufolge muss es in HTML5 erstellt und die Installation auf Desktops abgebrochen werden!
Bootcoder
8

Windows Installer-Anwendungen werden häufig verwendet, um interne Geschäftsanwendungen in Umgebungen mit Windows zu installieren. Sie sollten sich auch fragen, ob die Anwendung im Laufe ihrer Lebensdauer möglicherweise aktualisiert, gepatcht, repariert oder sauber von den Systemen der Benutzer entfernt werden muss. In vielen Fällen lautet die Antwort "Ja". In diesem Fall kann ein ordnungsgemäß geschriebener Installer die Gesamtkosten für die Wartung der Anwendung im Laufe der Zeit senken. Es gibt weitere Dienste und Funktionen, die für die Verwendung mit Windows Installer entwickelt wurden, z. B. den Neustart-Manager und WMI sowie Produkt- und Patch-Inventarfunktionen. Wenn Ihre Anwendung davon profitieren kann, ist dies ein weiterer Grund, ein Installationsprogramm einzuschließen.

Die anfänglichen Kosten für die Entwicklung eines nützlichen Installationsprogramms für Ihre Anwendung zahlen sich möglicherweise langfristig aus, und die Entwicklungskosten können durch Auswahl eines geeigneten Windows Installer-Authoring-Tools wie WiX oder InstallShield oder eines anderen verringert werden.

Mark Rovetta
quelle
7

Wie bei allen technischen Entscheidungen kommt es darauf an.

Der wahrscheinlich wichtigste Faktor ist, zu verstehen, wer der Verbraucher Ihres Installationsprozesses ist und über welche Fähigkeiten das Entwicklungsteam verfügt.

Da es intern ist, gehe ich davon aus, dass es von einer internen IT-Abteilung bereitgestellt wird. Sie sind wahrscheinlich keine Fremden, die Muscheln befehlen.

Grafische Installationsassistenten sind hilfreich für Software, die direkt an externe Kunden verteilt wird, da einfache Annahmen zu Ihrer Konfiguration nicht mehr gültig sind, z.

In Ihrer Umgebung wird dieses Zeug wahrscheinlich von der Entwicklung oder der IT bestimmt und ändert sich selten. Aus diesem Grund empfehle ich, Shell-Skripte zu verwenden, um Dateien an die entsprechende Stelle zu kopieren. Die Skripte sollten in Ihrem Produkt als Teil des Pakets enthalten sein, das veröffentlicht wird. Sie sollte zusammen mit Ihrer App auch versionskontrolliert sein.

Wo ich arbeite, wird unsere gesamte Webanwendung über einen InstallShield-Assistenten installiert, der eine Reihe von Fragen stellt, von denen die meisten Dateisystemspeicherorte, Datenbankverbindungsinformationen und andere Einstellungen sind, die nur in Konfigurationsdateien enden. Es ist schwer zu automatisieren. Da die Web-App-Installation im Kern nur ein paar Datenbanken erstellt und Dateien kopiert hat, schreibe ich ein neues Installationsprogramm, das entweder Ant oder Powershell verwendet und einfach .sql-Dateien ausführt und Dateien kopiert.

Dann kann jeder verstehen, wie es funktioniert und es effektiver warten.

Brandon
quelle
Ich denke, dass die Bereitstellung von Skripten eine praktikable Lösung für das ist, was ich brauche. Ich befürchtete, dass es die Installer-Funktionalität neu erfinden könnte, und deshalb wollte ich wissen, ob es vielleicht einfacher sein könnte, den Weg eines Installers zu beschreiten. Nach Ihrer Antwort klingt es so, als ob Installateure übertrieben und nicht einfach zu warten wären.
user1529856
Genau. Es ist die Neuerfindung der Installer-Funktionalität, aber es ist der Installer, der wahrscheinlich übertrieben ist.
Brandon