Criando um Instalador MSI em C# com IronBarCode
Para criar um instalador MSI com o IronBarcode, adicione um Projeto de Instalação à sua solução, inclua as DLLs necessárias (onnxruntime.dll, IronBarcodeInterop.dll e ReaderInterop.dll), e construa o projeto para gerar um pacote MSI distribuível.
Um MSI (Microsoft Installer) é um pacote de instalação do Windows que facilita a instalação, atualizações e remoção de software. Usar um MSI fornece um método padronizado para instalar aplicativos, o que é especialmente benéfico para implantações empresariais. O formato MSI suporta recursos avançados, como capacidade de reversão, pontos de instalação administrativa e integração com o serviço do Windows Installer.
O IronBarCode oferece ferramentas para integrar-se perfeitamente com seu aplicativo existente e convertê-lo em um MSI para fácil distribuição. Ele garante uma instalação confiável em vários ambientes e permite que os desenvolvedores selecionem quais componentes incluir ou excluir. A biblioteca suporta múltiplos formatos de código de barras, tornando-a versátil para várias aplicações de negócios.
Este tutorial demonstra como criar um arquivo MSI a partir de um aplicativo de código de barras de exemplo que aproveita as poderosas capacidades de escaneamento do IronBarCode.
Início Rápido: Gerar e Ler um Código de Barras MSI em um Clique
Use a API simples do IronBarcode para criar e ler códigos de barras MSI com configuração mínima. O trecho abaixo mostra como é fácil escrever uma imagem de código de barras MSI e depois lê-la de volta—tudo em apenas algumas linhas.
-
Instale IronBarcode com o Gerenciador de Pacotes NuGet
PM > Install-Package BarCode -
Copie e execute este trecho 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 }); -
Implante para testar em seu ambiente de produção.
Comece a usar IronBarcode em seu projeto hoje com uma avaliação gratuita
Quais são os pré-requisitos para começar?
Antes de iniciar o projeto, por favor baixe a extensão Microsoft Visual Studio Installer Projects para que a construção do MSI funcione. Além disso, certifique-se de ter instalado o IronBarCode via NuGet no seu projeto.
Por Que a Extensão Visual Studio Installer Projects É Necessária?
A extensão fornece o modelo de Projeto de Configuração necessário para criar instaladores MSI no Visual Studio 2022. Esta extensão adiciona modelos de projetos de implantação que foram removidos do Visual Studio após a versão 2010, permitindo que os desenvolvedores criem pacotes tradicionais do Windows Installer.
Qual Versão do .NET Framework Devo Destinar?
Use o Windows Forms App (.NET Framework) para a máxima compatibilidade com cenários de implantação MSI. Embora o IronBarCode suporte várias plataformas .NET, a versão do .NET Framework garante a mais ampla compatibilidade com sistemas Windows onde instaladores MSI são normalmente implantados.
Como Crio o Projeto Inicial do Instalador MSI?
Para este exemplo, use um projeto Windows Forms App (.NET Framework) para demonstrar sua funcionalidade. Esta abordagem fornece um paradigma de interface gráfica familiar para aplicativos de escaneamento de código de barras para desktop.
Qual Tipo de Projeto Funciona Melhor para Instaladores MSI?
Aplicativos Windows Forms oferecem o caminho mais direto para criar aplicativos de escaneamento de código de barras implantados por MSI. Eles oferecem integração nativa com o Windows e não requerem dependências adicionais de tempo de execução além do .NET Framework.
Quais São os Componentes Principais do Aplicativo de Demonstração?
O aplicativo consiste em um formulário com um botão que abre um diálogo de arquivo para escanear códigos de barras de imagens. Esta interface simples demonstra a funcionalidade principal enquanto mantém a complexidade da implantação mínima. Para cenários mais avançados, considere explorar leitura de códigos de barras em PDFs ou implementar leitura de códigos de barras assíncrona.
Como Adiciono um Botão ao Formulário do Windows?
- Navegue até a Caixa de Ferramentas
- Procure por Botão
- Adicione o botão arrastando e soltando no formulário do Windows

Onde Posso Encontrar o Controle de Botão?
O controle de Botão está localizado na seção Controles Comuns da Caixa de Ferramentas do Visual Studio. Se a Caixa de Ferramentas não estiver visível, abra-a em Exibir > Caixa de Ferramentas ou pressione Ctrl+Alt+X.
Como Devo Posicionar o Botão no Formulário?
Centralize o botão no formulário ou posicione-o onde os usuários esperam naturalmente encontrar a ação principal. Considere seguir as diretrizes de interface do Windows para uma experiência de usuário consistente em aplicações.
Como Edito o Código do Botão para Lidar com Escaneamento de Código de Barras?
Dê um duplo clique no componente do botão para acessar o código C# do formulário. Abaixo está a lógica para o componente de formulário—ele recebe um código de barras e tenta escaneá-lo. Este código escaneia apenas imagens e não funciona para PDFs. Use o método ReadPdf para documentos PDF. Para opções abrangentes de leitura de códigos de barras, consulte a documentação de configurações do leitor 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
Quais são os componentes chave da lógica de leitura de código de barras?
O código usa OpenFileDialog para selecionar imagens, configura BarcodeReaderOptions para digitalização detalhada e exibe resultados via MessageBox. As opções de velocidade de leitura podem ser ajustadas com base em seus requisitos de desempenho. A configuração ExpectMultipleBarcodes permite ler múltiplos códigos de barras de uma única imagem.
Como devo lidar com erros em produção?
Inclua registros de erro apropriados e mensagens de erro amigáveis ao usuário em vez de exibir detalhes brutos de exceção. Considere implementar uma lógica de nova tentativa para cenários de código de barras não reconhecido e forneça orientações aos usuários sobre os requisitos de qualidade de imagem.
Posso escanear documentos PDF com este código?
Para documentos PDF, substitua o método BarcodeReader.Read por BarcodeReader.ReadPdf para lidar adequadamente com a extração de códigos de barras em PDFs. Você também pode explorar as configurações específicas de leitor de código de barras para PDF para desempenho otimizado.
Aqui está um exemplo de como modificar o código para suporte a 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
Como adiciono um projeto de instalação para criar o MSI?
Após configurar o formulário e sua lógica de controlador, adicione um projeto de instalação à solução existente para criar um instalador MSI. O projeto de instalação permite que você crie um instalador para o aplicativo que acabou de criar. Esse processo empacota todos os componentes necessários, incluindo as dependências do IronBarCode, em uma única unidade implantável.
Clique com o botão direito do mouse na solução e depois vá para Adicionar > Novo Projeto...
Para o instalador MSI, compile novamente o projeto MsiInstallerSample no modo Release. Clique com o botão direito do mouse no projeto de instalação e depois vá para Adicionar > Saída do Projeto...
Para garantir que o instalador MSI funcione sem problemas, você deve incluir os seguintes três arquivos em seu projeto de instalação: onnxruntime.dll, IronBarcodeInterop.dll e ReaderInterop.dll. Esses arquivos são gerados quando você compila o projeto no modo Release:
onnxruntime.dll: Localizado emMsiInstallerSample\MsiInstallerSample\bin\ReleaseIronBarcodeInterop.dll: Localizado emMsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\nativeReaderInterop.dll: Localizado emMsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native

Se algum desses arquivos estiver faltando, você poderá enfrentar a seguinte mensagem de exceção, conforme observado neste artigo de solução de problemas: Falta de DLLs ao Criar Instalador MSI
Por fim, compile o projeto de instalação. O instalador estará localizado em: MsiInstallerSample\SetupProject\Release
Por que essas DLLs específicas são necessárias?
O IronBarCode depende dessas bibliotecas nativas para capacidades de detecção e processamento de código de barras baseadas em ML. O onnxruntime.dll fornece o runtime de aprendizado de máquina, enquanto o IronBarcodeInterop.dll e o ReaderInterop.dll lidam com as operações de processamento de código de barras nativo. Esses componentes permitem recursos avançados como correção de imagem e tolerância a falhas.
O que acontece se eu esquecer de incluir essas DLLs?
A falta de DLLs causará exceções de runtime quando os usuários tentarem escanear códigos de barras após a instalação. O aplicativo pode falhar ao inicializar o IronBarCode corretamente, resultando em erros de FileNotFoundException ou DllNotFoundException.
Como configuro as configurações de saída do projeto?
Selecione "Saída primária" ao adicionar saída de projeto para incluir o executável principal e suas dependências gerenciadas. Isso garante que todos os assemblies .NET sejam incluídos, mas lembre-se de adicionar manualmente as DLLs nativas mencionadas acima.
Como executo e testo o instalador MSI?
Instale o aplicativo com o arquivo MSI para garantir que tudo funcione sem problemas. Os testes devem cobrir tanto cenários de instalação quanto de desinstalação para verificar a implantação correta.

O que devo verificar durante os testes?
Verifique se o aplicativo é lançado corretamente, pode abrir diálogos de arquivos e escaneia com sucesso códigos de barras de imagens de teste. Teste com vários formatos de código de barras suportados para garantir funcionalidade abrangente. Também verifique se a aplicação de chave de licença funciona corretamente no ambiente implantado.
Como posso solucionar problemas de instalação?
Habilite o registro do Windows Installer para capturar informações detalhadas sobre quaisquer falhas de instalação ou componentes ausentes. Verifique o Visualizador de Eventos do Windows para detalhes adicionais de erro e consulte os guias de solução de problemas para questões comuns de implantação.
Onde Posso Baixar o Projeto de Exemplo Completo?
Você pode baixar o código completo para este guia. Ele vem como um arquivo zipado que você pode abrir no Visual Studio como um projeto WinFormApp. O exemplo inclui todas as configurações necessárias e demonstra as melhores práticas para implantação MSI.
Baixe o Projeto WinForm MSI App
O que está incluído no projeto de exemplo?
O download contém uma solução completa do Visual Studio com o aplicativo Windows Forms e Projeto de Configuração configurado. Inclui imagens de código de barras de exemplo para teste e demonstra a configuração adequada de chave de licença para cenários de implantação.
Como Abro o Projeto Baixado?
Extraia o arquivo ZIP e abra o arquivo .sln no Visual Studio 2022 com a extensão Installer Projects instalada. Certifique-se de ter a versão mais recente do IronBarCode instalada via Gerenciador de Pacotes NuGet. Para instruções de configuração mais detalhadas, consulte a documentação da API.
Perguntas frequentes
Quais arquivos DLL são necessários ao criar um instalador MSI com um aplicativo de código de barras?
Ao criar um instalador MSI com o IronBarCode, você precisa incluir três arquivos DLL essenciais: onnxruntime.dll, IronBarcodeInterop.dll e ReaderInterop.dll. Esses arquivos garantem que o IronBarCode funcione corretamente quando seu aplicativo for implantado por meio do pacote MSI.
Quais são os pré-requisitos necessários antes de criar um instalador MSI para meu aplicativo de código de barras?
Antes de criar um instalador MSI com o IronBarCode, você precisa baixar e instalar a extensão Microsoft Visual Studio Installer Projects para o Visual Studio 2022. Além disso, certifique-se de que o IronBarCode esteja instalado em seu projeto por meio do gerenciador de pacotes NuGet.
Como posso gerar e ler códigos de barras MSI rapidamente em C#?
O IronBarCode fornece uma API simples para gerar e ler códigos de barras MSI. Você pode criar um código de barras MSI usando `BarcodeWriter.CreateBarcode()` com o tipo de codificação MSI, salvá-lo como uma imagem e, em seguida, lê-lo novamente usando `BarcodeReader.Read()` com `BarcodeEncoding.MSI` especificado nas opções do leitor.
Quais são as vantagens de usar instaladores MSI para distribuir aplicativos de código de barras?
Os instaladores MSI oferecem métodos de instalação padronizados, ideais para implantações corporativas. Quando combinados com o IronBarCode, eles oferecem recursos de reversão, pontos de instalação administrativos, integração com o serviço Windows Installer e garantem uma instalação confiável em diversos ambientes, permitindo que os desenvolvedores selecionem quais componentes incluir.
A biblioteca de código de barras suporta múltiplos formatos de código de barras em pacotes MSI?
Sim, o IronBarCode suporta vários formatos de código de barras, tornando-o versátil para diversas aplicações comerciais. Essa flexibilidade permite que os desenvolvedores integrem diferentes tipos de código de barras em seus aplicativos empacotados em MSI, com base em requisitos comerciais específicos.

