Criando um Instalador MSI em C# com IronBarCode

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

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.

  1. Instale IronBarcode com o Gerenciador de Pacotes NuGet

    PM > Install-Package BarCode
  2. 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 });
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronBarcode em seu projeto hoje com uma avaliação gratuita

    arrow pointer

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

Toolbox do Visual Studio mostrando o controle Button destacado sob a seção All Windows Forms para adicionar ao formulário

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}");
                    }
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

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
}
$vbLabelText   $csharpLabel

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...

 related to Como adiciono um projeto de instalação para criar o MSI?

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...

Diálogo Add Project Output Group do Visual Studio mostrando opções de implantação para SetupProject com Solution Explorer visível

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 em MsiInstallerSample\MsiInstallerSample\bin\Release
  • IronBarcodeInterop.dll: Localizado em MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native
  • ReaderInterop.dll: Localizado em MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native

Diálogo de arquivo do Visual Studio selecionando ReaderInterop.dll para adicionar ao projeto de instalação com o Solution Explorer mostrando dependências

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.

Visual Studio mostrando a construção de instalador concluída com a pasta de Release contendo setup.exe e arquivos do instalador

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 2,108,094 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package BarCode
executar um exemplo Veja seu fio se transformar em um código de barras.