Erstellen eines C# MSI-Installers mit IronBarCode

This article was translated from English: Does it need improvement?
Translated
View the article in English

Um ein MSI-Installationsprogramm mit IronBarCode zu erstellen, fügen Sie ein Setup-Projekt zu Ihrer Lösung hinzu, fügen Sie die erforderlichen DLLs (onnxruntime.dll, IronBarcodeInterop.dll und ReaderInterop.dll) ein und erstellen Sie das Projekt, um ein verteilbares MSI-Paket zu erzeugen.

Ein MSI (Microsoft Installer) ist ein Windows-Installationspaket, das die Installation, Aktualisierung und Entfernung von Software erleichtert. Die Verwendung einer MSI bietet eine standardisierte Methode für die Installation von Anwendungen, was vor allem für Unternehmensbereitstellungen von Vorteil ist. Das MSI-Format unterstützt erweiterte Funktionen wie Rollback-Funktionen, administrative Installationspunkte und die Integration von Windows Installer-Diensten.

IronBarCode bietet Tools zur nahtlosen Integration in Ihre vorhandene Anwendung und deren Umwandlung in ein MSI für einfache Verteilung. Es gewährleistet eine zuverlässige Installation in verschiedenen Umgebungen und ermöglicht es Entwicklern, auszuwählen, welche Komponenten ein- oder ausgeschlossen werden sollen. Die Bibliothek unterstützt mehrere Barcode-Formate, was sie vielseitig für verschiedene Geschäftsanwendungen einsetzbar macht.

Dieses Tutorial zeigt, wie man eine MSI-Datei aus einer beispielhaften Barcode-Anwendung erstellt, die die leistungsstarken Scanfunktionen von IronBarCode nutzt.

Schnellstart: Ein MSI-Barcode in einem Klick generieren und lesen

Verwenden Sie die einfache API von IronBarcode, um MSI-Barcodes mit minimaler Einrichtung zu erstellen und zu lesen. Der unten stehende Ausschnitt zeigt, wie einfach es ist, ein MSI-Barcode-Bild zu erstellen und es dann zu lesen - und das alles in nur ein paar Zeilen.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronBarcode mit dem NuGet-Paketmanager.

    PM > Install-Package BarCode

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var msiImg = IronBarCode.BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI).SaveAsImage("msi.png");
    var results = IronBarCode.BarcodeReader.Read("msi.png", new BarcodeReaderOptions { ExpectBarcodeTypes = BarcodeEncoding.MSI });
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronBarcode in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Nutzen Sie IronBarcode heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Welche Voraussetzungen brauche ich, bevor ich anfange?

Bevor Sie mit dem Projekt beginnen, laden Sie bitte die Microsoft Visual Studio Installer Projects extension herunter, damit der MSI-Build funktioniert. Stellen Sie außerdem sicher, dass Sie IronBarCode über NuGet in Ihrem Projekt installiert haben.

Warum ist die Visual Studio Installer Projects Extension erforderlich?

Die Erweiterung bietet die Setup-Projektvorlage, die für die Erstellung von MSI-Installationsprogrammen in Visual Studio 2022 erforderlich ist. Diese Erweiterung fügt Deployment-Projektvorlagen hinzu, die nach Version 2010 aus Visual Studio entfernt wurden, und ermöglicht es Entwicklern, traditionelle Windows Installer-Pakete zu erstellen.

Welche Version des .NET Frameworks sollte ich anvisieren?

Verwenden Sie Windows Forms App (.NET Framework) für maximale Kompatibilität mit MSI-Bereitstellungsszenarien. IronBarCode unterstützt verschiedene .NET-Plattformen, wobei die Version mit dem .NET Framework die größtmögliche Kompatibilität mit Windows-Systemen gewährleistet, auf denen MSI-Installationsprogramme üblicherweise eingesetzt werden.

Wie erstelle ich das MSI-Installer-Projekt?

Verwenden Sie für dieses Beispiel ein Windows Forms App (.NET Framework) Projekt, um dessen Funktionalität zu demonstrieren. Dieser Ansatz bietet ein vertrautes UI-Paradigma für Desktop-Barcodescan-Anwendungen.

Welcher Projekttyp eignet sich am besten für MSI-Installer?

Windows Forms-Anwendungen bieten den einfachsten Weg zur Erstellung von MSI-bereitgestellten Barcode-Scan-Anwendungen. Sie bieten native Windows-Integration und erfordern keine zusätzlichen Laufzeitabhängigkeiten über das .NET Framework hinaus.

Was sind die wichtigsten Komponenten der Demo-Anwendung?

Die Anwendung besteht aus einem Formular mit einer Schaltfläche, die einen Dateidialog zum Scannen von Barcodes aus Bildern öffnet. Diese einfache Schnittstelle veranschaulicht die Kernfunktionalität und hält die Komplexität der Bereitstellung gering. Für fortgeschrittenere Szenarien sollten Sie sich mit dem Lesen von Barcodes aus PDFs oder der Implementierung von async barcode reading beschäftigen.

Wie füge ich eine Schaltfläche zu einem Windows-Formular hinzu?

  • Navigieren Sie zur Werkzeugkiste
  • Suchen Sie nach Button
  • Hinzufügen der Schaltfläche durch Ziehen und Ablegen auf das Windows-Formular

Visual Studio Toolbox mit hervorgehobenem Schaltflächen-Steuerelement im Abschnitt Alle Windows-Formulare zum Hinzufügen zu einem Formular

Wo kann ich das Schaltflächen-Steuerelement finden?

Das Steuerelement Button befindet sich im Abschnitt Common Controls der Visual Studio Toolbox. Wenn die Toolbox nicht sichtbar ist, öffnen Sie sie über Ansicht > Toolbox oder drücken Sie Strg+Alt+X.

Wie soll ich die Schaltfläche auf dem Formular positionieren?

Platzieren Sie die Schaltfläche in der Mitte des Formulars oder an einer Stelle, an der die Benutzer die primäre Aktion erwarten. Beachten Sie die Richtlinien der Windows-Benutzeroberfläche, um eine einheitliche Benutzererfahrung in allen Anwendungen zu gewährleisten.

Wie bearbeite ich den Code der Schaltfläche, um das Scannen von Barcodes zu ermöglichen?

Doppelklicken Sie auf die Schaltflächenkomponente, um auf den C#-Code des Formulars zuzugreifen. Im Folgenden ist die Logik für die Formularkomponente dargestellt - sie nimmt einen Barcode auf und versucht, ihn zu scannen. Dieser Code scannt nur Bilder und funktioniert nicht für PDFs. Verwenden Sie die Methode ReadPdf für PDF-Dokumente. Umfassende Optionen zum Lesen von Barcodes finden Sie in der Dokumentation der Barcode-Leseeinstellungen.

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace MsiInstallerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
            IronSoftware.Logger.LogFilePath = "Default.log";

            IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "Image files (All files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        // Load the selected image
                        using (Bitmap bmp = new Bitmap(openFileDialog.FileName))
                        {
                            // Process the image
                            AnyBitmap anyBitmap = AnyBitmap.FromBitmap(bmp);

                            // Configure barcode reader options (customize as needed)
                            var option = new BarcodeReaderOptions
                            {
                                Speed = ReadingSpeed.Detailed,
                                ExpectMultipleBarcodes = true,
                                ScanMode = BarcodeScanMode.Auto,
                            };

                            BarcodeResults result = IronBarCode.BarcodeReader.Read(anyBitmap, option);

                            if (result.Count > 0)
                            {
                                string output = string.Empty;
                                foreach(var barcode in result)
                                {
                                    Console.WriteLine($"Barcode Found: {barcode.Text}");
                                    output += barcode.Text + "\n";
                                }

                                MessageBox.Show($"Detected Barcodes: \n{output}");
                            }
                            else
                            {
                                MessageBox.Show("No Barcode found.");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"{ex.Message}");
                    }
                }
            }
        }
    }
}
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace MsiInstallerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
            IronSoftware.Logger.LogFilePath = "Default.log";

            IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "Image files (All files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        // Load the selected image
                        using (Bitmap bmp = new Bitmap(openFileDialog.FileName))
                        {
                            // Process the image
                            AnyBitmap anyBitmap = AnyBitmap.FromBitmap(bmp);

                            // Configure barcode reader options (customize as needed)
                            var option = new BarcodeReaderOptions
                            {
                                Speed = ReadingSpeed.Detailed,
                                ExpectMultipleBarcodes = true,
                                ScanMode = BarcodeScanMode.Auto,
                            };

                            BarcodeResults result = IronBarCode.BarcodeReader.Read(anyBitmap, option);

                            if (result.Count > 0)
                            {
                                string output = string.Empty;
                                foreach(var barcode in result)
                                {
                                    Console.WriteLine($"Barcode Found: {barcode.Text}");
                                    output += barcode.Text + "\n";
                                }

                                MessageBox.Show($"Detected Barcodes: \n{output}");
                            }
                            else
                            {
                                MessageBox.Show("No Barcode found.");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"{ex.Message}");
                    }
                }
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Was sind die wichtigsten Komponenten der BarCode-Leselogik?

Der Code verwendet OpenFileDialog, um Bilder auszuwählen, konfiguriert BarcodeReaderOptions für detaillierte Scans und zeigt die Ergebnisse über MessageBox an. Die Lesegeschwindigkeitsoptionen können je nach Ihren Leistungsanforderungen angepasst werden. Die Einstellung ExpectMultipleBarcodes ermöglicht das Lesen mehrerer Barcodes aus einem einzigen Bild.

Wie sollte ich mit Fehlern in der Produktion umgehen?

Die Übersetzung sollte eine angemessene Fehlerprotokollierung und benutzerfreundliche Fehlermeldungen enthalten, anstatt nur die Ausnahmedetails anzuzeigen. Erwägen Sie die Implementierung einer Wiederholungslogik für Barcode nicht erkannt-Szenarien und geben Sie den Benutzern Hinweise zu den Anforderungen an die Bildqualität.

Kann ich mit diesem Code PDF-Dokumente scannen?

Ersetzen Sie bei PDF-Dokumenten die Methode BarcodeReader.Read durch BarcodeReader.ReadPdf, um die Extraktion von PDF-Barcodes korrekt durchzuführen. Sie können auch PDF-spezifische Barcode-Leseeinstellungen für eine optimierte Leistung erkunden.

Hier ein Beispiel dafür, wie der Code für die PDF-Unterstützung geändert werden kann:

// For PDF documents, use ReadPdf method
if (Path.GetExtension(openFileDialog.FileName).ToLower() == ".pdf")
{
    var pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option);
    // Process PDF results similar to image results
}
// For PDF documents, use ReadPdf method
if (Path.GetExtension(openFileDialog.FileName).ToLower() == ".pdf")
{
    var pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option);
    // Process PDF results similar to image results
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wie füge ich ein Setup-Projekt hinzu, um die MSI zu erstellen?

Nach dem Einrichten des Formulars und seiner Steuerungslogik fügen Sie der vorhandenen Lösung ein Setup-Projekt hinzu, um ein MSI-Installationsprogramm zu erstellen. Mit dem Setup-Projekt können Sie ein Installationsprogramm für die gerade erstellte Anwendung erstellen. Bei diesem Prozess werden alle erforderlichen Komponenten, einschließlich der IronBarCode-Abhängigkeiten, in einer einzigen einsatzfähigen Einheit zusammengefasst.

Rechtsklicken Sie auf die Lösung und gehen Sie zu Hinzufügen > Neues Projekt...

 related to Wie füge ich ein Setup-Projekt hinzu, um die MSI zu erstellen?

Für den MSI-Installer bauen Sie das Projekt MsiInstallerSample erneut im Release-Modus. Rechtsklicken Sie auf das Setup-Projekt und gehen Sie zu Hinzufügen > Projektausgabe...

Dialogfeld Visual Studio Add Project Output Group mit Bereitstellungsoptionen für SetupProject bei sichtbarem Solution Explorer

Um sicherzustellen, dass der MSI-Installer reibungslos läuft, müssen Sie die folgenden drei Dateien in Ihr Setup-Projekt einschließen: onnxruntime.dll, IronBarcodeInterop.dll und ReaderInterop.dll. Diese Dateien werden generiert, wenn Sie das Projekt im Release-Modus aufbauen:

  • onnxruntime.dll: Befindet sich unter MsiInstallerSample\MsiInstallerSample\bin\Release
  • IronBarcodeInterop.dll: Befindet sich unter MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native
  • ReaderInterop.dll: Befindet sich unter MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native

Visual Studio Dateidialog, der ReaderInterop.dll auswählt, um sie zum Setup-Projekt hinzuzufügen, wobei der Solution Explorer Abhängigkeiten anzeigt

Wenn eine dieser Dateien fehlt, können Sie die folgende Ausnahmemeldung erhalten, wie in diesem Artikel zur Fehlerbehebung beschrieben: Fehlende DLLs beim Erstellen des MSI-Installationsprogramms

Schließlich bauen Sie das Setup-Projekt auf. Das Installationsprogramm wird unter folgender Adresse zu finden sein: MsiInstallerSample\SetupProject\Release

Warum werden diese speziellen DLLs benötigt?

IronBarCode ist für die ML-basierte Barcode-Erkennung und -Verarbeitung auf diese nativen Bibliotheken angewiesen. Die onnxruntime.dll stellt die Laufzeitumgebung für das maschinelle Lernen bereit, während IronBarcodeInterop.dll und ReaderInterop.dll die nativen Barcode-Verarbeitungsvorgänge übernehmen. Diese Komponenten ermöglichen erweiterte Funktionen wie Bildkorrektur und Fehlertoleranz.

Was passiert, wenn ich vergesse, diese DLLs einzubinden?

Fehlende DLLs führen zu Laufzeitausnahmen, wenn Benutzer nach der Installation versuchen, Barcodes zu scannen. Die Anwendung kann IronBarCode möglicherweise nicht richtig initialisieren, was zu den Fehlern FileNotFoundException oder DllNotFoundException führt.

Wie konfiguriere ich die Einstellungen für die Projektausgabe?

Wählen Sie beim Hinzufügen der Projektausgabe die Option "Primäre Ausgabe", um die ausführbare Hauptdatei und ihre verwalteten Abhängigkeiten einzuschließen. Dadurch wird sichergestellt, dass alle .NET-Assemblies enthalten sind, aber denken Sie daran, die oben erwähnten nativen DLLs manuell hinzuzufügen.

Wie kann ich das MSI-Installationsprogramm ausführen und testen?

Installieren Sie die Anwendung mit der MSI-Datei, um sicherzustellen, dass alles reibungslos abläuft. Die Tests sollten sowohl Installations- als auch Deinstallationsszenarien abdecken, um die ordnungsgemäße Bereitstellung zu überprüfen.

Visual Studio zeigt den fertigen Installer-Build mit dem Release-Ordner, der die setup.exe und die Installer-Dateien enthält

Was sollte ich beim Testen überprüfen?

Stellen Sie sicher, dass die Anwendung korrekt gestartet wird, Dateidialoge geöffnet werden können und Barcodes von Testbildern erfolgreich gescannt werden. Testen Sie mit verschiedenen unterstützten Barcode-Formaten, um eine umfassende Funktionalität zu gewährleisten. Überprüfen Sie auch, ob die Lizenzschlüsselanwendung in der bereitgestellten Umgebung korrekt funktioniert.

Wie kann ich Probleme bei der Installation beheben?

Aktivieren Sie die Windows Installer-Protokollierung, um detaillierte Informationen zu Installationsfehlern oder fehlenden Komponenten zu erfassen. Überprüfen Sie die Windows-Ereignisanzeige auf zusätzliche Fehlerdetails und konsultieren Sie die Fehlerbehebungsanleitungen für häufige Bereitstellungsprobleme.

Wo kann ich das vollständige Beispielprojekt herunterladen?

Sie können den vollständigen Code für dieses Handbuch herunterladen. Er wird als gezippte Datei geliefert, die Sie in Visual Studio als WinFormApp-Projekt öffnen können. Das Beispiel enthält alle notwendigen Konfigurationen und demonstriert die besten Praktiken für die MSI-Bereitstellung.

Laden Sie das WinForm MSI App-Projekt herunter

Was ist im Beispielprojekt enthalten?

Der Download enthält eine vollständige Visual Studio-Lösung mit der Windows Forms-Anwendung und einem konfigurierten Setup-Projekt. Sie enthält Beispiel-Barcode-Bilder zum Testen und demonstriert die richtige Lizenzschlüsselkonfiguration für Einsatzszenarien.

Wie kann ich das heruntergeladene Projekt öffnen?

Entpacken Sie die ZIP-Datei und öffnen Sie die .sln-Datei in Visual Studio 2022 mit der installierten Erweiterung Installer Projects. Stellen Sie sicher, dass Sie die neueste Version von IronBarCode über NuGet Package Manager installiert haben. Ausführlichere Anweisungen zur Einrichtung finden Sie in der API-Dokumentation.

Häufig gestellte Fragen

Welche DLL-Dateien sind für die Erstellung eines MSI-Installationsprogramms mit einer Barcode-Anwendung erforderlich?

Wenn Sie ein MSI-Installationsprogramm mit IronBarCode erstellen, müssen Sie drei wichtige DLL-Dateien hinzufügen: onnxruntime.dll, IronBarcodeInterop.dll und ReaderInterop.dll. Diese Dateien stellen sicher, dass IronBarCode ordnungsgemäß funktioniert, wenn Ihre Anwendung über das MSI-Paket bereitgestellt wird.

Welche Voraussetzungen muss ich erfüllen, bevor ich ein MSI-Installationsprogramm für meine Barcode-Anwendung erstellen kann?

Bevor Sie einen MSI-Installer mit IronBarCode erstellen, müssen Sie die Microsoft Visual Studio Installer Projects-Erweiterung für Visual Studio 2022 herunterladen und installieren. Stellen Sie außerdem sicher, dass IronBarCode über den NuGet-Paketmanager in Ihrem Projekt installiert ist.

Wie kann ich MSI-Barcodes in C# schnell erzeugen und lesen?

IronBarCode bietet eine einfache API zum Erzeugen und Lesen von MSI-Barcodes. Sie können einen MSI-Barcode mit BarcodeWriter.CreateBarcode() mit dem MSI-Kodierungstyp erstellen, ihn als Bild speichern und ihn dann mit BarcodeReader.Read() mit BarcodeEncoding.MSI in den Leseoptionen zurücklesen.

Was sind die Vorteile der Verwendung von MSI-Installationsprogrammen für die Verteilung von Barcode-Anwendungen?

MSI-Installationsprogramme bieten standardisierte Installationsmethoden, die sich ideal für die Bereitstellung in Unternehmen eignen. In Kombination mit IronBarCode bieten sie Rollback-Funktionen, administrative Installationspunkte, die Integration von Windows Installer-Diensten und gewährleisten eine zuverlässige Installation in verschiedenen Umgebungen, wobei die Entwickler auswählen können, welche Komponenten sie einbeziehen möchten.

Unterstützt die Barcode-Bibliothek mehrere Barcode-Formate in MSI-Paketen?

Ja, IronBarCode unterstützt mehrere Barcode-Formate und ist damit vielseitig für verschiedene Geschäftsanwendungen einsetzbar. Diese Flexibilität ermöglicht es Entwicklern, verschiedene Barcodetypen in ihre MSI-gepackten Anwendungen zu integrieren, je nach den spezifischen Geschäftsanforderungen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 2,002,059 | Version: 2025.12 gerade veröffentlicht