使用 IronBarcode 创建 C# MSI 安装程序。

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

要使用 IronBarcode 创建 MSI 安装程序,请在您的解决方案中添加一个 Setup Project,包含所需的 DLL(onnxruntime.dllIronBarcodeInterop.dllReaderInterop.dll),并构建该项目以生成一个可分发的 MSI 包。

MSI(微软安装程序)是一种 Windows 安装包,便于软件安装、更新和删除。 使用 MSI 可提供标准化的应用程序安装方法,这对企业部署尤其有利。 MSI 格式支持回滚功能、管理安装点和 Windows Installer 服务集成等高级功能。

IronBarCode提供了工具,可以无缝地与您的现有应用程序集成,并将其转换为MSI以便于分发。 它确保在各种环境下的可靠安装,并允许开发人员选择要包含或排除的组件。 该库支持多种条形码格式,使其成为各种业务应用的通用库。

本教程演示了如何从一个利用 IronBarCode 强大扫描功能的条码应用程序示例中创建 MSI 文件。

快速入门:一键生成和读取MSI条形码

使用 IronBarcode 的简单 API,只需最少的设置即可创建和读取 MSI 条形码。下面的代码段显示了编写 MSI 条形码图像和读取条形码图像是多么容易--只需几行代码。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronBarcode

    PM > Install-Package BarCode

  2. 复制并运行这段代码。

    var msiImg = IronBarCode.BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI).SaveAsImage("msi.png");
    var results = IronBarCode.BarcodeReader.Read("msi.png", new BarcodeReaderOptions { ExpectBarcodeTypes = BarcodeEncoding.MSI });
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronBarcode,免费试用!
    arrow pointer

今天在您的项目中使用 IronBarcode,免费试用。

第一步:
green arrow pointer

开始之前我需要哪些先决条件? 在开始项目之前,请下载 [Microsoft Visual Studio Installer Projects extension]( https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects) 以使MSI构建工作。 此外,请确保您已通过 NuGet 在项目中安装了 IronBarcode。

为什么需要 Visual Studio 安装程序项目扩展? 该扩展提供了在 Visual Studio 2022 中创建 MSI 安装程序所需的设置项目模板。该扩展添加了 2010 版之后从 Visual Studio 中移除的部署项目模板,允许开发人员创建传统的 Windows 安装包。

我应该选择哪个版本的 .NET Framework? 使用 Windows 窗体应用程序(.NET Framework),以最大限度地兼容 MSI 部署方案。 虽然 IronBarcode 支持 [ 各种 .NET 平台](https://ironsoftware.com/csharp/barcode/features/compatibility/),但 .NET Framework 版本可确保与通常部署 MSI 安装程序的 Windows 系统具有最广泛的兼容性。

如何创建初始 MSI 安装程序项目? 在本例中,使用一个 Windows 窗体应用程序(.NET Framework)项目来演示其功能。 这种方法为桌面条形码扫描应用程序提供了熟悉的用户界面范例。

哪种项目类型最适合 MSI 安装程序? Windows 窗体应用程序为创建 MSI 部署的条形码扫描应用程序提供了最直接的途径。 这些工具提供本地 Windows 集成,除了 .NET Framework 之外不需要额外的运行时依赖性。

演示应用程序的关键组件是什么? 应用程序包括一个带有按钮的表单,该按钮可打开一个文件对话框来扫描图像中的 BarCode。 这个简单的界面展示了核心功能,同时将部署的复杂性降至最低。 对于更高级的应用场景,可考虑探索 [ 从 PDF 中读取条形码](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-pdf/)或实现 [async 条形码读取](https://ironsoftware.com/csharp/barcode/how-to/async-multithread/)。

如何在 Windows 窗体中添加按钮? - 导航到工具箱 - 搜索按钮 - 通过拖放到 Windows 窗体上添加按钮 ![Visual Studio 工具箱,显示在所有 Windows 窗体部分突出显示的按钮控件,用于添加到窗体](/static-assets/barcode/how-to/msi-installer/add-button.webp)。

在哪里可以找到按钮控件? 按钮控件位于 Visual Studio 工具箱的常用控件部分。 如果工具箱不可见,请从 "视图">"工具箱 "或按 Ctrl+Alt+X 打开。

如何在表单上定位按钮? 将按钮放在表单的中心位置,或者放在用户自然期望找到主要操作的位置。 考虑遵循 Windows UI 指南,以获得跨应用程序的一致用户体验。

如何编辑按钮代码以处理条形码扫描? 双击按钮组件,访问表单的 C# 代码。 以下是表单组件的逻辑--它接收一个 BarCode 并尝试扫描它。 此代码只能扫描图像,不能用于 PDF。 对 PDF 文档使用 `ReadPdf` 方法。 有关全面的条码读取选项,请参阅[条码阅读器设置文档](https://ironsoftware.com/csharp/barcode/examples/barcode-reader-settings-csharp/)。 ```cs 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}"); } } } } } } ```

条码读取逻辑的关键组成部分是什么? 代码使用 `OpenFileDialog` 选择图像,配置 `BarcodeReaderOptions` 以进行详细扫描,并通过 `MessageBox` 显示结果。 [阅读速度选项](https://ironsoftware.com/csharp/barcode/how-to/reading-speed-options/)可根据您的性能要求进行调整。 `ExpectMultipleBarcodes` 设置可启用 [从单个图像读取多个条形码](https://ironsoftware.com/csharp/barcode/how-to/read-multiple-barcodes/)。

我应该如何处理生产中的错误? 包括适当的错误日志和用户友好的错误信息,而不是显示原始的异常详细信息。 考虑针对[条形码未识别](https://ironsoftware.com/csharp/barcode/troubleshooting/barcode-not-recognized/)的情况实施重试逻辑,并就图像质量要求向用户提供指导。

使用此代码可以扫描 PDF 文档吗? 对于 PDF 文档,请将 `BarcodeReader.Read` 方法替换为 `BarcodeReader.ReadPdf` 以正确处理 PDF 条码提取。 您还可以探索[特定于 PDF 的条形码阅读器设置](https://ironsoftware.com/csharp/barcode/examples/pdf-barcode-reader-settings-csharp/),以优化性能。 以下是如何修改代码以支持 PDF 的示例: ```cs // 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 } ```

如何添加设置项目以创建 MSI? 设置表单及其控制器逻辑后,在现有解决方案中添加一个设置项目,以创建 MSI 安装程序。 安装项目允许您为刚刚创建的应用程序构建安装程序。 该流程将所有必要组件(包括 IronBarcCode 依赖项)打包成一个可部署的单元。 右键点击解决方案,然后转到**添加** > **新项目...** !a href="/static-assets/barCode/how-to/msi-installer/add-setup-project.webp">Visual Studio 解决方案资源管理器上下文菜单显示用于创建设置项目的添加 > 新项目选项。 对于MSI安装程序,再次以发布模式构建MsiInstallerSample项目。 右键点击安装项目,然后转到**添加** > **项目输出...** ![Visual Studio 添加项目输出组对话框,显示 SetupProject 的部署选项,同时显示解决方案资源管理器](/static-assets/barcode/how-to/msi-installer/add-project-output.webp)。 为了确保MSI安装程序的顺利运行,您必须在安装项目中包括以下三个文件:`onnxruntime.dll`、`IronBarcodeInterop.dll`和`ReaderInterop.dll`。 这些文件在以发布模式构建项目时生成: -<代码>onnxruntime.dll:位于 `MsiInstallerSample\MsiInstallerSample\bin\Release 中` -<代码>IronBarcodeInterop.dll:位于 `MsiInstallerSample\MsiInstallerSample\bin/Release\runtimes\win-x86\native` 中。 -<代码>ReaderInterop.dll:位于 `MsiInstallerSample\MsiInstallerSample\binRelease\runtimes\win-x86\native` 中。 ![Visual Studio 文件对话框选择 ReaderInterop.dll 添加到设置项目,解决方案资源管理器显示依赖关系](/static-assets/barCode/how-to/msi-installer/add-additional-dll.webp)。 如果缺少这些文件中的任何一个,您可能会遇到以下异常消息,请参阅本故障排除文章:[创建 MSI 安装程序时缺少 DLL](https://ironsoftware.com/csharp/barcode/troubleshooting/missing-dll-msi-installer/) 最后,构建安装项目。 安装程序将位于<代码>MsiInstallerSample\SetupProject\Release为什么需要这些特定的 DLL? IronBarcode 依靠这些本地库实现基于 ML 的条码检测和处理功能。 onnxruntime.dll 提供机器学习运行时,而 IronBarcodeInterop.dll 和 ReaderInterop.dll 则处理本地条形码处理操作。 这些组件可实现[图像校正](https://ironsoftware.com/csharp/barcode/how-to/image-correction/)和[容错](https://ironsoftware.com/csharp/barcode/features/fault-tolerance/)等高级功能。

如果我忘记包含这些 DLL 会怎样? 当用户在安装后尝试扫描 BarCode 时,缺少的 DLL 将导致运行时异常。 应用程序可能无法正确初始化 IronBarcode,从而导致 FileNotFoundException 或 DllNotFoundException 错误。

如何配置项目输出设置? 添加项目输出时,请选择 "主要输出",以包含主可执行文件及其托管依赖项。 这样可以确保包含所有 .NET 程序集,但切记要手动添加上述本地 DLL。

如何运行和测试 MSI 安装程序? 使用 MSI 文件安装应用程序,确保一切顺利运行。 测试应涵盖安装和卸载场景,以验证部署是否正确。 ![Visual Studio 显示已完成的安装程序构建,Release 文件夹包含 setup.exe 和安装程序文件](/static-assets/barcode/how-to/msi-installer/demonstration.gif)。

测试期间应检查哪些内容? 验证应用程序能否正确启动,能否打开文件对话框,能否成功扫描测试图像中的 BarCode。 使用各种[支持的条形码格式](https://ironsoftware.com/csharp/barcode/get-started/supported-barcode-formats/)进行测试,以确保功能全面。 还要验证[许可证密钥应用程序](https://ironsoftware.com/csharp/barcode/troubleshooting/apply-a-license-key-in-ironbarcode/)是否能在部署的环境中正常运行。

如何排除安装问题? 启用 Windows 安装程序日志记录功能,以获取有关安装失败或组件丢失的详细信息。 检查 Windows 事件查看器以了解更多错误详情,并查阅 [ 故障排除指南](https://ironsoftware.com/csharp/barcode/troubleshooting/) 以了解常见部署问题。

在哪里可以下载完整的示例项目? 您可以下载本指南的完整代码。它以压缩文件的形式提供,您可以在Visual Studio中作为WinFormApp项目打开。 示例包括所有必要的配置,并演示了 MSI 部署的最佳实践。 [下载WinForm MSI应用程序项目](/static-assets/barcode/how-to/msi-installer/MsiInstallerSample.zip)

示例项目包括哪些内容? 下载包含一个完整的 Visual Studio 解决方案,其中包含 Windows 窗体应用程序和已配置的设置项目。 它包括用于测试的示例条形码图像,并演示了用于部署场景的正确[许可证密钥配置](https://ironsoftware.com/csharp/barcode/get-started/license-keys/)。

如何打开下载的项目? 解压 ZIP 文件并在安装了安装程序项目扩展的 Visual Studio 2022 中打开 `.sln` 文件。 确保您已通过 NuGet 软件包管理器安装了最新版本的 IronBarcode。 有关更详细的设置说明,请参阅 [API 文档](https://ironsoftware.com/csharp/barcode/object-reference/api/)。

常见问题解答

在创建带有 BarCode 应用程序的 MSI 安装程序时,需要哪些 DLL 文件?

在使用 IronBarCode 创建 MSI 安装程序时,您需要包含三个重要的 DLL 文件:onnxruntime.dll、IronBarcodeInterop.dll 和 ReaderInterop.dll。这些文件可确保在通过 MSI 软件包部署应用程序时,IronBarcode 能正常运行。

在为我的 BarCode 应用程序创建 MSI 安装程序之前,我需要哪些先决条件?

在使用 IronBarcode 创建 MSI 安装程序之前,您需要下载并安装 Visual Studio 2022 的 Microsoft Visual Studio Installer Projects 扩展。此外,确保通过 NuGet 软件包管理器在项目中安装了 IronBarCode。

如何用 C# 快速生成和读取 MSI BarCode?

IronBarCode 为生成和读取 MSI 条形码提供了一个简单的 API。您可以使用 BarcodeWriter.CreateBarcode() 以 MSI 编码类型创建 MSI 条形码,将其保存为图像,然后使用 BarcodeReader.Read(),并在阅读器选项中指定 BarcodeEncoding.MSI 将其读取回来。

使用 MSI 安装程序发布 BarCode 应用程序有哪些优势?

MSI 安装程序提供了标准化的安装方法,是企业部署的理想选择。与 IronBarcode 结合使用时,它们可提供回滚功能、管理安装点、Windows Installer 服务集成,并确保在各种环境中进行可靠安装,同时允许开发人员选择包含哪些组件。

条码库是否支持 MSI 包中的多种条码格式?

是的,IronBarCode 支持多种条码格式,使其适用于各种商业应用。这种灵活性允许开发人员根据特定的业务需求将不同的条码类型集成到其 MSI 封装的应用程序中。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 2,002,059 | 版本: 2025.12 刚刚发布