Crear un instalador MSI de C# con IronBarcode
Para crear un instalador MSI con IronBarcode, agrega un Proyecto de Instalación a tu solución, incluye los DLL requeridos (onnxruntime.dll, IronBarcodeInterop.dll, y ReaderInterop.dll), y construye el proyecto para generar un paquete MSI distribuible.
Un MSI (Microsoft Installer) es un paquete de instalación de Windows que facilita la instalación, actualización y eliminación de software. El uso de un MSI proporciona un método estandarizado para instalar aplicaciones, lo que resulta especialmente beneficioso para las implantaciones empresariales. El formato MSI es compatible con funciones avanzadas como las capacidades de reversión, los puntos de instalación administrativos y la integración del servicio Windows Installer.
IronBarcode ofrece herramientas para integrar perfectamente con su aplicación existente y convertirla en un MSI para facilitar su distribución. Asegura una instalación confiable en diversos entornos y permite a los desarrolladores seleccionar qué componentes incluir o excluir. La biblioteca es compatible con múltiples formatos de códigos de barras, lo que la hace versátil para diversas aplicaciones empresariales.
Este tutorial demuestra cómo crear un archivo MSI a partir de una aplicación de código de barras de ejemplo que aprovecha las potentes capacidades de escaneo de IronBarcode.
Inicio rápido: generar y leer un código de barras MSI con un clic
Utilice la sencilla API de IronBarcode para crear y leer códigos de barras MSI con una configuración mínima. El siguiente fragmento muestra lo fácil que es escribir una imagen de código de barras MSI y luego leerla, todo en sólo un par de líneas.
-
Instala IronBarcode con el Administrador de Paquetes NuGet
PM > Install-Package BarCode -
Copie y ejecute este fragmento de código.
var msiImg = IronBarCode.BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI).SaveAsImage("msi.png"); var results = IronBarCode.BarcodeReader.Read("msi.png", new BarcodeReaderOptions { ExpectBarcodeTypes = BarcodeEncoding.MSI }); -
Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
¿Qué requisitos previos necesito antes de empezar?
Antes de iniciar el proyecto, descargue la extensión [Microsoft Visual Studio Installer Projects](
Crear un instalador MSI Además, asegúrese de haber instalado IronBarcode a través de NuGet en su proyecto.
¿Por qué es necesaria la extensión Visual Studio Installer Projects?
La extensión proporciona la plantilla de proyecto de instalación necesaria para crear instaladores MSI en Visual Studio 2022. Esta extensión añade plantillas de proyecto de instalación que se eliminaron de Visual Studio después de la versión 2010, lo que permite a los desarrolladores crear paquetes tradicionales de Windows Installer.
¿A qué versión de .NET Framework debo dirigirme?
Utilice Windows Forms App (.NET Framework) para obtener la máxima compatibilidad con los escenarios de despliegue MSI. Mientras que IronBarcode admite varias plataformas .NET, la versión de .NET Framework asegura la compatibilidad más amplia con sistemas Windows donde se despliegan típicamente los instaladores MSI.
¿Cómo se crea el proyecto inicial del instalador MSI?
Para este ejemplo, utilice un proyecto de Windows Forms App (.NET Framework) para demostrar su funcionalidad. Este enfoque proporciona un paradigma de interfaz de usuario familiar para las aplicaciones de escaneado de códigos de barras de escritorio.
¿Qué tipo de proyecto funciona mejor para los instaladores MSI?
Las aplicaciones Windows Forms ofrecen la vía más directa para crear aplicaciones de escaneado de códigos de barras implementadas en MSI. Ofrecen integración nativa con Windows y no requieren dependencias de tiempo de ejecución adicionales más allá de .NET Framework.
¿Cuáles son los componentes clave de la aplicación de demostración?
La aplicación consiste en un formulario con un botón que abre un cuadro de diálogo de archivo para escanear códigos de barras a partir de imágenes. Esta sencilla interfaz demuestra la funcionalidad básica manteniendo al mismo tiempo una complejidad de despliegue mínima. Para escenarios más avanzados, considere explorar lectura de códigos de barras desde PDF o implementar lectura de códigos de barras asíncrona.
¿Cómo añado un botón al formulario de Windows?
- Navega a
ToolBox - Busca
Button - Añada el botón arrastrando y soltando en el formulario de Windows

¿Dónde puedo encontrar el control de botones?
El control Button se encuentra en la sección de Controles Comunes del Cuadro de herramientas de Visual Studio. Si el Cuadro de herramientas no es visible, ábrelo desde View > Toolbox o presiona Ctrl+Alt+X.
¿Cómo debo colocar el botón en el formulario?
Centre el botón en el formulario o sitúelo donde los usuarios esperen encontrar la acción principal. Considere la posibilidad de seguir las directrices de la interfaz de usuario de Windows para lograr una experiencia de usuario coherente en todas las aplicaciones.
¿Cómo edito el código del botón para manejar el escaneo de códigos de barras?
Haga doble clic en el componente del botón para acceder al código C# del formulario. A continuación se muestra la lógica del componente del formulario: recibe un código de barras e intenta escanearlo. Este código sólo escanea imágenes y no funciona con PDF. Usa el método ReadPdf para documentos PDF. Para conocer todas las opciones de lectura de códigos de barras, consulte la documentación sobre la configuración del lector de códigos de barras.
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}");
}
}
}
}
}
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Namespace MsiInstallerSample
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All
IronSoftware.Logger.LogFilePath = "Default.log"
IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01"
Using openFileDialog As New OpenFileDialog()
openFileDialog.Filter = "Image files (All files (*.*)|*.*"
If openFileDialog.ShowDialog() = DialogResult.OK Then
Try
' Load the selected image
Using bmp As New Bitmap(openFileDialog.FileName)
' Process the image
Dim anyBitmap As AnyBitmap = AnyBitmap.FromBitmap(bmp)
' Configure barcode reader options (customize as needed)
Dim option As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed,
.ExpectMultipleBarcodes = True,
.ScanMode = BarcodeScanMode.Auto
}
Dim result As BarcodeResults = IronBarCode.BarcodeReader.Read(anyBitmap, option)
If result.Count > 0 Then
Dim output As String = String.Empty
For Each barcode In result
Console.WriteLine($"Barcode Found: {barcode.Text}")
output += barcode.Text & vbCrLf
Next
MessageBox.Show($"Detected Barcodes: {vbCrLf}{output}")
Else
MessageBox.Show("No Barcode found.")
End If
End Using
Catch ex As Exception
MessageBox.Show($"{ex.Message}")
End Try
End If
End Using
End Sub
End Class
End Namespace
¿Cuáles son los componentes clave de la lógica de lectura de códigos de barras?
El código utiliza OpenFileDialog para seleccionar imágenes, configura BarcodeReaderOptions para un escaneo detallado, y muestra los resultados a través de MessageBox. Las opciones de velocidad de lectura pueden ajustarse en función de sus requisitos de rendimiento. La configuración ExpectMultipleBarcodes permite leer múltiples códigos de barras de una sola imagen.
¿Cómo debo gestionar los errores en producción?
Incluya un registro de errores adecuado y mensajes de error fáciles de usar en lugar de mostrar los detalles de la excepción sin procesar. Considere la posibilidad de implementar una lógica de reintento para código de barras no reconocido y proporcionar orientación a los usuarios sobre los requisitos de calidad de imagen.
¿Puedo escanear documentos PDF con este código?
Para documentos PDF, reemplaza el método BarcodeReader.Read con BarcodeReader.ReadPdf para manejar correctamente la extracción de códigos de barras de PDF. También puede explorar Configuraciones del lector de códigos de barras específicas de PDF para optimizar el rendimiento.
He aquí un ejemplo de cómo modificar el código para que sea compatible con PDF:
// 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
}
' For PDF documents, use ReadPdf method
If Path.GetExtension(openFileDialog.FileName).ToLower() = ".pdf" Then
Dim pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option)
' Process PDF results similar to image results
End If
¿Cómo añado un proyecto de instalación para crear el MSI?
Después de configurar el formulario y su lógica de controlador, añada un proyecto de instalación a la solución existente para crear un instalador MSI. El proyecto de instalación le permite crear un instalador para la aplicación que acaba de crear. Este proceso empaqueta todos los componentes necesarios, incluidas las dependencias de IronBarcode, en una sola unidad desplegable.

Para el instalador MSI, compile el proyecto MsiInstallerSample nuevamente en modo Release.


Para asegurar que el instalador MSI funcione sin problemas, debes incluir los siguientes tres archivos en tu proyecto de instalación: onnxruntime.dll, IronBarcodeInterop.dll, y ReaderInterop.dll. - onnxruntime.dll: Ubicado en MsiInstallerSample\MsiInstallerSample\bin\Release
onnxruntime.dll: Ubicado enMsiInstallerSample\MsiInstallerSample\bin\ReleaseIronBarcodeInterop.dll: Ubicado enMsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\nativeReaderInterop.dll: Ubicado enMsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native

Si falta alguno de estos archivos, es posible que aparezca el siguiente mensaje de excepción, como se indica en este artículo de solución de problemas: Faltan DLL en la creación del instalador MSI
El instalador estará ubicado en: MsiInstallerSample\SetupProject\Release El instalador se ubicará en: MsiInstallerSample\SetupProject\Release
¿Por qué son necesarias estas DLL específicas?
IronBarcode depende de estas bibliotecas nativas para las capacidades de detección y procesamiento de códigos de barras basadas en ML. onnxruntime.dll proporciona el runtime de aprendizaje automático, mientras IronBarcodeInterop.dll y ReaderInterop.dll manejan las operaciones nativas de procesamiento de códigos de barras. Estos componentes permiten funciones avanzadas como corrección de imágenes y tolerancia a fallos.
¿Qué ocurre si olvido incluir estas DLL?
Las DLL que falten provocarán excepciones en tiempo de ejecución cuando los usuarios intenten escanear códigos de barras después de la instalación. La aplicación puede no inicializar IronBarcode correctamente, resultando en errores FileNotFoundException o DllNotFoundException.
¿Cómo configuro los ajustes de salida del proyecto?
Seleccione "Salida principal" al añadir la salida del proyecto para incluir el ejecutable principal y sus dependencias gestionadas. Esto garantiza que se incluyan todos los ensamblados .NET, pero recuerda añadir manualmente las DLL nativas mencionadas anteriormente.
¿Cómo ejecuto y pruebo el instalador MSI?
Instala la aplicación con el archivo MSI para asegurarte de que todo funciona correctamente. Las pruebas deben abarcar escenarios de instalación y desinstalación para verificar la correcta implementación.

¿Qué debo comprobar durante las pruebas?
Compruebe que la aplicación se inicia correctamente, puede abrir cuadros de diálogo de archivos y escanea códigos de barras de imágenes de prueba. Pruébalo con varios formatos de código de barras soportados para garantizar una funcionalidad completa. Compruebe también que la aplicación de la clave de licencia funciona correctamente en el entorno desplegado.
¿Cómo puedo solucionar problemas de instalación?
Habilite el registro de Windows Installer para capturar información detallada sobre cualquier fallo de instalación o componente que falte. Compruebe el Visor de sucesos de Windows para obtener más detalles sobre los errores y consulte las guías de solución de problemas para conocer los problemas de implementación más comunes.
¿Dónde puedo descargar el proyecto de muestra completo?
Descargar el Proyecto de Aplicación WinForm MSI La muestra incluye toda la configuración necesaria y demuestra las mejores prácticas para la implementación de MSI.
Descargar el proyecto de aplicación MSI de WinForm
¿Qué incluye el proyecto de muestra?
La descarga contiene una solución completa de Visual Studio con la aplicación Windows Forms y el proyecto de instalación configurado. Incluye ejemplos de imágenes de códigos de barras para pruebas y muestra la configuración adecuada de licencia para escenarios de despliegue.
¿Cómo abro el proyecto descargado?
Extrae el archivo ZIP y abre el archivo .sln en Visual Studio 2022 con la extensión Installer Projects instalada. Asegúrese de tener instalada la última versión de IronBarcode a través del Administrador de Paquetes NuGet. Para obtener instrucciones de configuración más detalladas, consulte la documentación de la API.
Preguntas Frecuentes
¿Qué archivos DLL son necesarios para crear un instalador MSI con una aplicación de código de barras?
Al crear un instalador MSI con IronBarCode, debe incluir tres archivos DLL esenciales: onnxruntime.dll, IronBarcodeInterop.dll y ReaderInterop.dll. Estos archivos garantizan que IronBarCode funcione correctamente cuando su aplicación se despliegue a través del paquete MSI.
¿Qué requisitos previos necesito antes de crear un instalador MSI para mi aplicación de código de barras?
Antes de crear un instalador MSI con IronBarCode, debe descargar e instalar la extensión Microsoft Visual Studio Installer Projects para Visual Studio 2022. Además, asegúrese de que IronBarCode está instalado en su proyecto a través del gestor de paquetes NuGet.
¿Cómo puedo generar y leer rápidamente códigos de barras MSI en C#?
IronBarCode proporciona una API sencilla para generar y leer códigos de barras MSI. Puede crear un código de barras MSI utilizando BarcodeWriter.CreateBarcode() con el tipo de codificación MSI, guardarlo como una imagen y, a continuación, volver a leerlo utilizando BarcodeReader.Read() con BarcodeEncoding.MSI especificado en las opciones del lector.
¿Cuáles son las ventajas de utilizar instaladores MSI para distribuir aplicaciones de código de barras?
Los instaladores MSI proporcionan métodos de instalación estandarizados ideales para las implantaciones empresariales. Cuando se combinan con IronBarcode, ofrecen capacidades de reversión, puntos de instalación administrativos, integración del servicio Windows Installer y garantizan una instalación fiable en varios entornos, al tiempo que permiten a los desarrolladores seleccionar qué componentes incluir.
¿Es compatible la biblioteca de códigos de barras con varios formatos de códigos de barras en paquetes MSI?
Sí, IronBarcode admite múltiples formatos de códigos de barras, lo que lo hace versátil para diversas aplicaciones empresariales. Esta flexibilidad permite a los desarrolladores integrar diferentes tipos de códigos de barras en sus aplicaciones empaquetadas en MSI en función de requisitos empresariales específicos.
¿Cuáles son los beneficios de usar IronBarcode para operaciones de códigos de barras?
IronBarcode ofrece beneficios como facilidad de integración, soporte para numerosos formatos de códigos de barras, generación de imágenes de alta calidad, y capacidades robustas de lectura, convirtiéndolo en una herramienta integral para operaciones de códigos de barras en C#.
¿IronBarcode proporciona soporte para personalizar la apariencia de los códigos de barras?
Sí, IronBarcode proporciona amplias opciones de personalización para la apariencia de los códigos de barras, incluidas color, tamaño y anotaciones de texto, permitiéndote adaptar los códigos de barras a tus requisitos de diseño específicos.
¿Cómo puede IronBarcode ayudar a mejorar la eficiencia de los procesos de negocio?
IronBarcode mejora la eficiencia de los procesos de negocio al permitir la generación y lectura rápida y precisa de códigos de barras, reduciendo errores de entrada de datos manuales y mejorando el seguimiento de inventario y activos.
¿Qué habilidades de programación se necesitan para implementar IronBarcode en un proyecto?
El conocimiento básico de programación en C# es suficiente para implementar IronBarcode en un proyecto, ya que proporciona métodos sencillos y documentación completa para guiar a los desarrolladores.
¿Es IronBarcode adecuado para tanto proyectos pequeños como aplicaciones empresariales grandes?
IronBarcode está diseñado para ser escalable y versátil, haciéndolo adecuado para proyectos pequeños, así como para aplicaciones empresariales grandes que requieren soluciones robustas de códigos de barras.

