繁体   English   中英

dotnetinstaller 配置以继续 MSI 安装,即使先决条件失败

[英]dotnetinstaller configuration to continue with MSI installation even if prerequisites fail

我有一个使用dotnetinstaller构建的 VC++ 应用程序的设置。 作为本机应用程序,VC++ 可再发行组件是先决条件。 然而,现在这些变化非常频繁(每 6-8 周)。 这意味着我们发布了新版本的应用程序,但在客户实际安装我们的应用程序之前,更新版本的可再发行组件也已发布并安装在客户机器上。 结果是我们设置中的旧可再发行组件将无法安装,因为存在较新的版本。 这反过来又会导致设置失败,因此不会执行应用程序 MSI。

目前,解决方法是打开以管理员身份提升的命令提示符并使用正确的参数运行 msiexec。 我想为客户找到更好的体验。

VC++ 可再发行组件是作为必需的先决条件添加的。 这意味着required_install属性设置为true 这样做的结果是,无法安装先决条件意味着安装失败。 虽然allow_continue_on_errordefault_continue_on_error设置为true ,用户被告知失败并且可以继续其他先决条件,但最终设置失败并且MSI执行没有开始。

我尝试通过将required_install属性设置为false来使 VC++ 可再发行的可选先决条件。 然而,这会导致另一种不希望的行为。 如果缺少任何必需的先决条件,则会显示先决条件对话框,我可以选中/取消选中可选的先决条件(如果我不想要它们,则跳过它们)。 但是,如果找到所有必需的先决条件并且仅缺少可选的先决条件,则安装程序不会显示先决条件对话框和 go 直接执行 MSI。

我需要一个选项来使这些先决条件成为可选,因为无法安装它们不会停止 MSI 的执行; 但是,我确实希望用户看到他们丢失了,如果是这样,并且可以选择安装它们。

dotnetintaller 可以通过某种方式实现吗?

似乎有一个安装 VC++ 可再发行组件版本的键,即HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|ARM} 这记录在这里: https://docs.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=msvc-160

但是,版本存储在格式为v14.28.29913.00的字符串中,如下所示: 在此处输入图像描述 Minor、Major、Build 和 Revision 也有 DWORD 值。

使用 dotnetinstaller 的一种解决方案是使用installedcheckoperator组合installedcheck操作。 一个例子可以在这里找到。

dotnetinstaller 的最新版本3.1.415支持解析格式为v[version]的字符串,例如v14.28.29913.00 ,因此更容易检查 VC++ 可再发行组件版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM