将“Microsoft Access Database Engine 2010 Redistributable”作为ClickOnce的先决条件添加

6
在我们的解决方案中,我们需要处理读取xls和xlsx文件。对我们来说,它完美地工作。
是否可以将“Microsoft Access Database Engine 2010 Redistributable”(http://www.microsoft.com/download/en/details.aspx?id=13255)添加为ClickOnce安装程序的先决条件?
这意味着clickOne部署应检测是否已安装“Microsoft Access Database Engine 2010 Redistributable”。如果是,则安装它,否则不安装。
我不知道是否有可能这样做?如果可以,如何操作?
提前致谢。
1个回答

4
我相信你可以将这个可再发行组件添加到Visual Studio生成的启动程序包中。这里可能会对你有所帮助。但是,ClickOnce无法检测到它是否已安装。
我认为你可能误解了ClickOnce的作用。ClickOnce将文件从服务器复制到客户端并保持同步。就这样而已。大多数ClickOnce应用程序需要运行一些先决条件(.NET Framework、C++ Runtime等)。Visual Studio将帮助你处理这些,并创建一个捆绑所有这些的启动程序。这与ClickOnce没有任何关系,只是他们在VS中加入的一些辅助工具。Visual Studio还会为您创建一个html页面,其中包含指向ClickOnce应用程序和启动程序exe的链接;再次强调,这只是Visual Studio帮助您的功能,而不是 ClickOnce。
唯一有一些“智能”功能的先决条件是.NET Framework。这是因为生成的html页面可以查看浏览器的UserAgent字符串,并确定安装了哪些版本的框架。对于所有其他的先决条件,你需要编写代码来处理或者要求用户知道是否需要运行安装程序。
如果您的应用程序可以在没有先决条件的情况下启动,您可以编写代码来检查它是否已安装,然后警告用户或下载并启动安装程序。这是您可以做的最好的方式。

我非常感谢阅读您的答案,@codeConcussion。我想知道安装Microsoft Access Database Engine 2010 Redistributable是否需要管理员权限,我怀疑是需要的。而我们大多数用户都没有管理员权限。但是您的答案让我意识到即使他们不需要管理员权限,仅仅包含Engine 2010也意味着每次都要安装它。谁想这么做呢? - Rod
@Rod 好久没想过 ClickOnce 了,所以我的知识可能已经过时了,请验证我说的任何内容。我不知道 Access 是否需要管理员权限来安装。然而,重点是 Access 的安装与 ClickOnce 没有任何关系。如果标准安装需要管理员权限,那么 ClickOnce 就无法绕过它。 - codeConcussion
@Rod 其次,他们不需要每次运行安装程序。他们可以通过两种方式启动应用程序-通过运行引导程序或单击链接到 .application 文件。运行引导程序会运行预先安装的必备组件,并在最后启动应用程序。.application 文件只是启动应用程序。如果您使用 ClickOnce 创建了开始菜单快捷方式,则它将链接到 .application 文件。如果他们再次运行引导程序,不会发生任何“坏事”。它只是看到 Access 已经安装并且什么也不做。 - codeConcussion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接