winforms 应用程序安装程序:根据前提条件,Microsoft数据库引擎2010不可用

nc1teljy  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(144)

我有一个windows窗体c-sharp应用程序开发的windows 10。当我试图使安装程序,我找不到“微软数据库引擎2010”(重要的是我的应用程序)下的“先决条件”如下所示:

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

9ceoxa92

9ceoxa921#

我从来没有使用过这个运行时,但你做了谷歌搜索吗?它看起来像运行时可用:https://www.microsoft.com/en-us/download/details.aspx?id=13255。我相信你是这样做的。也许它是错误的?或者一个格式,你不能使用我猜。
下载的是EXE格式的x86和64位版本。EXE文件中有嵌入的MSI文件(Windows Installer),您可以解压缩这些文件,或者您应该能够以静默模式运行EXE(可能是最安全的)。执行AccessDatabaseEngine_X64.exe /?以获取参数列表。

合并模块

通常您可以使用merge module在编译时将运行时组件添加到您自己的MSI中,但此运行时可能无法以这种格式提供。相反,您可以使用某种引导程序按顺序运行您自己的MSI安装程序和此先决条件数据库引擎运行时MSI / EXE(或者甚至只是一个批处理文件-请参阅底部)。

引导程序

WiX工具包(这是一种比Visual Studio安装程序项目更好的制作MSI文件的方法--有关详细信息,请参见链接)提供了一个名为Burn的引导程序--它可以按顺序安装EXE和MSI文件。还有其他可用的引导程序,但我还没有尝试过。下面是一些早期引导程序的描述:Wix -如何运行/安装没有UI的应用程序。

正如您将在上面的链接中看到的,这里有一个正在使用的WiX引导程序Burn的示例:https://github.com/frederiksen/Classic-WiX-Burn-Theme(它甚至还显示了一个WiX MSI包)。WiX和Burn确实有一个学习曲线。
使用Visual Studio Installer Projects可能有更简单的选项,我不知道,但我认为你需要一个引导程序来按顺序安装几个MSI文件。据我所知,这些安装程序项目只支持你在屏幕截图中列出的先决条件,以便按需下载和安装,而且它们似乎允许添加(任何)标准合并模块。很奇怪,你不能告诉安装程序项目的设置。exe启动任何MSI的安装作为先决条件,考虑到整个功能是为了安装先决条件摆在首位。PhilDW肯定能够肯定地告诉你
商业工具(如高级安装程序Installshield)还具有一些功能,允许您以各种格式捆绑安装程序,在Installshield的情况下,这可能是Premium或最昂贵版本的功能。对于高级安装程序,不确定。Bogdan Mitrache将能够告诉我们-他们可能会做得更好。我不知道I don“我不想声称一些我不确定的事情-像这样的事情会随着新版本的发布而改变(Installshield显然也可能是这样)。

批处理文件、PowerShell脚本

最后,我应该补充一点,你显然可以使用批处理文件来按顺序安装文件(或者PowerShell脚本-尽管这取决于.NET)。例如, Package 在**self-extracting archive中。你可以快速尝试Windows中内置的iexpress.exe自解压工具:按住Windows键并点击R,输入iexpress并按Enter键。单击选项。非常清楚iexpress所遭受的安全漏洞
不知道这些 Package 器清理临时文件的效果如何(特别是在安装过程中出现错误的情况下)--这可能会很难看,很烦人,但它应该能工作。尽管如此,引导程序可以做更多的事情--比如为用户提供一个真正的GUI,以及处理错误条件等。
部署解决方案的安全性问题是我最讨厌的,所以我想添加一个链接:Prevent DLL Hijacking Burn with Clean Room。一个在the latest version of WiX中修复的WiX Burn问题(截至2018年1月)。正如你所看到的,iexpress.exe的吸引力和简单性通常不能弥补它的安全缺陷。它绝对不足以在全球范围内大规模公开发布。
如果您希望使用批处理文件或PowerShell进行安装,则以下答案提供了有关使用
msiexec.exe命令行的一些信息,并且还有一个指向另一个答案的链接,该答案涉及PowerShell**安装:如何使用powershell运行安装程序?

相关问题