应用程序安装程序:Microsoft数据库引擎2010在先决条件下不可用

我有一个为Windows 10开发的Windows窗体c-sharp应用程序。当我尝试制作安装程序时,我无法在“先决条件”下找到“microsoft database engine 2010”(对我的应用程序很重要),如下所示:

在此处输入图像描述

我不希望我的客户单独下载并安装它。 那么有没有办法生成一个安装程序,可以安装完整的软件和microsoft数据库引擎2010(如果它还没有安装在系统上)?

我从未使用过此运行时,但您是否进行了Google搜索? 看起来运行时可用: https : //www.microsoft.com/en-us/download/details.aspx?id = 13255 。 我相信你做到了。 也许这是错误的? 或者我猜你不能使用的格式。

下载是EXE格式的x86和64位版本。 EXE文件具有可以提取的嵌入式MSI文件(Windows Installer),或者您应该能够以静默模式运行EXE(可能最安全)。 做一个AccessDatabaseEngine_X64.exe /? 获取参数列表。

合并模块

通常,您可以使用合并模块在编译时将运行时组件添加到您自己的MSI,但此运行时可能无法以此格式提供。 相反,您可以使用某种类型的引导程序依次运行您自己的MSI安装程序和此必备数据库引擎运行时MSI / EXE(甚至只是批处理文件 – 请参见底部)。

Bootstrappers

WiX工具包 (比Visual Studio安装程序项目更好的制作MSI文件的方法 – 请参阅链接了解一些细节)具有一个名为Burn的引导程序 – 它可以按顺序安装EXE和MSI文件。 还有其他bootstrappers可用,但我还没有尝试过。 以下是一些早期引导程序的描述: Wix – 如何在没有UI的情况下运行/安装应用程序 。

正如您将在上面的链接中看到的,这里有一个使用的WiX引导程序Burn样本: https : //github.com/frederiksen/Classic-WiX-Burn-Theme (它甚至还显示了一个WiX MSI包)。 WiX和Burn确实有学习曲线。

使用我不知道的Visual Studio Installer Projects可能有更简单的选项,但我认为您需要一个引导程序来按顺序安装多个MSI文件。 据我所知,这些安装程序项目仅支持您在屏幕截图中显示的列出的先决条件,以便按需下载和安装,并且它们似乎允许添加(任何)标准合并模块。 非常奇怪的是,您不能告诉安装程序项目的setup.exe启动任何MSI的安装作为先决条件,考虑到整个function是首先安装先决条件。 PhilDW肯定能够肯定地告诉你

诸如Advanced InstallerInstallshield等商业工具还具有允许您以各种格式捆绑设置以便按顺序安装的function。 它可能是Installshield案例中Premium或最昂贵版本的一个function。 对于Advanced Installer不确定。 Bogdan Mitrache将能够告诉我们 – 他们可能会做得更好。 我不想要声称我不确定的东西 – 这些变化随着新版本的发布而变化(对于Installshield来说显然也是如此)。

批处理文件,PowerShell脚本

最后我要补充一点,你显然可以使用批处理文件按顺序安装文件(或者PowerShell脚本 – 虽然这取决于.NET)。 例如,包装在自解压存档中 。 您可以在Windows中快速尝试内置的iexpress.exe自解压工具:按住Windows键并点击R ,输入iexpress并按Enter键 。 点击选项。 非常了解iexpress带来的安全漏洞

不确定这些包装器如何清理它们的临时文件(特别是如果在安装过程中有错误) – 这可能是丑陋和烦人的,但它应该工作。 引导程序可以做更多事情 – 例如为用户提供真实的GUI并处理错误条件等。

部署解决方案的安全问题是我的一个小问题,所以我想添加一个链接: 防止DLL劫持与干净房间烧伤 。 在最新版本的WiX中修复了WiX Burn问题(截至2018年1月)。 正如您所看到的, iexpress.exe的诱惑力和简洁性通常无法弥补其安全性缺陷。 对于全球范围内的大规模公开发布来说,这绝对不够好。

如果要使用批处理文件或PowerShell进行安装,则以下答案提供了有关使用msiexec.exe命令行的一些信息,还有一个指向PowerShell安装的另一个答案的链接: 如何使用 PowerShell 通过安装程序运行?