Creación de un instalador C# MSI con IronBarCode
Para crear un instalador MSI con IronBarcode, añada un proyecto de instalación a su solución, incluya las DLL necesarias (onnxruntime.dll, IronBarcodeInterop.dll y ReaderInterop.dll) y compile 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 integrarse perfectamente con su aplicación existente y convertirla en un MSI para fácil 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 muestra 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 escaneado de IronBarcode.
Inicio rápido: Generar y leer un MSI de código de barras en 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.
Empieza a crear PDF con NuGet ahora:
Instalar IronBarcode con el gestor de paquetes NuGet
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
Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
Comience a usar IronBarcode en su proyecto hoy con una prueba gratuita.
¿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. Aunque IronBarcode es compatible con varias plataformas .NET, la versión .NET Framework garantiza la mayor compatibilidad con los sistemas Windows en los que suelen desplegarse 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?
- Busque Button
- Añada el botón arrastrándolo al formulario de Windows.
- 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 Common Controls de la caja de herramientas de Visual Studio. Si la caja de herramientas no está visible, ábrala desde Ver > Caja de herramientas o pulse 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. Utilice 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}");
}
}
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com¿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. El ajuste ExpectMultipleBarcodes permite leer varios códigos de barras a partir 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, sustituya el método BarcodeReader.Read por BarcodeReader.ReadPdf para gestionar correctamente la extracción de códigos de barras 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
}IRON VB CONVERTER ERROR developers@ironsoftware.com¿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 única unidad desplegable.

Para el instalador MSI, compile el proyecto MsiInstallerSample nuevamente en modo Release. 
Para asegurar que el instalador MSI funcione sin problemas, debe incluir los siguientes tres archivos en su proyecto de configuració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 estará ubicado en: MsiInstallerSample\SetupProject\Release
¿Por qué son necesarias estas DLL específicas?
IronBarcode depende de estas bibliotecas nativas para las funciones de detección y procesamiento de códigos de barras basadas en ML. Onnxruntime.dll proporciona el tiempo de ejecución de aprendizaje automático, mientras que IronBarcodeInterop.dll y ReaderInterop.dll gestionan 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. Es posible que la aplicación no inicialice IronBarcode correctamente, dando lugar a 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?
Extraiga el archivo ZIP y abra 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 de NuGet Package Manager. 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.






