Visual studio 打包程序时添加自定义的系统必备组件
在使用Visual studio自带打包工具来制作安装包,有时需要添加自定义的系统必备组件。本文以要添加系统必备组件: Microsoft Access Database Engine 2010为例。则需要如下步骤来完成:
1. 新建文件夹AccessDatabaseEngine, 将它放在C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages目录下。复制安装程序AccessDatabaseEngine.exe到此文件夹。
2. 整个组件的文件结构如下:
- 目录:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages
- 文件夹:AccessDatabaseEngine
- 文件夹:en
- package.xml
- AccessDatabaseEngine.exe
- product.xml
- 文件夹:en
- 文件夹:AccessDatabaseEngine
3. 新建产品清单(product.xml) 和程序包清单(package.xml)。
- 产品清单(product.xml)内容
<?xml version="1.0" encoding="utf-8" ?> <Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="AccessDatabaseEngine" > <!-- Defines list of files to be copied on build --> <PackageFiles> <PackageFile Name="AccessDatabaseEngine.exe" HomeSite="https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255" /> </PackageFiles> <InstallChecks> <RegistryCheck Property="ACEValue" Key="HKLM\SOFTWARE\Classes\Microsoft.ACE.OLEDB.12.0"/> </InstallChecks> <Commands Reboot="Defer"> <Command PackageFile="AccessDatabaseEngine.exe"> <!-- These checks determine whether the package is to be installed --> <InstallConditions> <!-- Comment out the below BypassIf entry if you want install the 32bit version CRRuntime redist in the target machine --> <BypassIf Property="ACEValue" Compare="ValueExists"/> </InstallConditions> <ExitCodes> <ExitCode Value="0" Result="Success"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> </Commands> </Product>
- 程序包清单(package.xml),该文件放在新建文件夹“en”下。
<?xml version="1.0" encoding="utf-8" ?> <Package xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" Name="DisplayName" Culture="Culture" > <!-- Defines a localizable string table for error messages and url's --> <Strings> <String Name="DisplayName">Access Database Engine</String> <String Name="Culture">en</String> <String Name="Anunexpected">An unexpected exit code was returned from the installer. The installation failed.</String> <String Name="AdminRequired">You do not have the permissions required to install this application. Please contact your administrator.</String> </Strings> </Package>
4. 在 visual studio在安装项目的系统必备组件中可以查看到新建的Access Database Engine 组件。