Installation 使用InstallShield Lite悄悄安装VC_REDIST.X86 我一直在拔掉我的头发,试图安装一个需要使用CudiSudioLite的C++可重新分配(2017 x86)的软件。 首先,我定义了一个包含C++可重分配的前提条件。当用户尝试安装时,用户界面始终显示。现在这不是一个真正的问题,但是,如果已经安装了可再发行版本`或者有一个更新的版本,那么它将失败,并显示一条消息,说明它已失败,它将询问用户是否要继续或中止安装。如果他选择继续,则软件安装良好。这对用户不是很友好。 尽管使用了正确的命令行开关,例如/q/norestart,但仍会发生这种情况。如果在命令提示下手动执行此操作,它将按其应做的操作。换句话说,它安装了它,或者失败了,因为它已经安装了,但是没有告诉用户任何信息。这就是它应该工作的方式。 现在,我在installshield脚本的末尾尝试将此作为一个自定义操作来执行,但在某些计算机和其他计算机上,安装似乎挂起。 现在我能给出的唯一线索是,如果我创建了一个MSI安装,那么它永远不会提示。但是,对于setup.exe安装,其作用如上所述。只有在安装64位应用程序时,我才能成功安装msi。永远不要使用32位应用程序。 有人能告诉我我做错了什么吗? 谢谢 VCRISDAT< >:这个C/C++运行时(各种版本和口味)确实是一个痛苦。不久前,我决定写点东西来总结几件事: (请至少略读一下——我希望不是很好,总比没有好——主要涉及检测运行时的存在)

Installation 使用InstallShield Lite悄悄安装VC_REDIST.X86 我一直在拔掉我的头发,试图安装一个需要使用CudiSudioLite的C++可重新分配(2017 x86)的软件。 首先,我定义了一个包含C++可重分配的前提条件。当用户尝试安装时,用户界面始终显示。现在这不是一个真正的问题,但是,如果已经安装了可再发行版本`或者有一个更新的版本,那么它将失败,并显示一条消息,说明它已失败,它将询问用户是否要继续或中止安装。如果他选择继续,则软件安装良好。这对用户不是很友好。 尽管使用了正确的命令行开关,例如/q/norestart,但仍会发生这种情况。如果在命令提示下手动执行此操作,它将按其应做的操作。换句话说,它安装了它,或者失败了,因为它已经安装了,但是没有告诉用户任何信息。这就是它应该工作的方式。 现在,我在installshield脚本的末尾尝试将此作为一个自定义操作来执行,但在某些计算机和其他计算机上,安装似乎挂起。 现在我能给出的唯一线索是,如果我创建了一个MSI安装,那么它永远不会提示。但是,对于setup.exe安装,其作用如上所述。只有在安装64位应用程序时,我才能成功安装msi。永远不要使用32位应用程序。 有人能告诉我我做错了什么吗? 谢谢 VCRISDAT< >:这个C/C++运行时(各种版本和口味)确实是一个痛苦。不久前,我决定写点东西来总结几件事: (请至少略读一下——我希望不是很好,总比没有好——主要涉及检测运行时的存在),installation,installshield,redistributable,Installation,Installshield,Redistributable,合并模块:Installshield Lite是否支持合并模块?如果是这样,您可以使用合并模块而不是vcredit_x64.exe文件安装vcredit。这对于UWP应用(通用CRT)是不够的,如以下链接所述: 一定要直接阅读上面的链接——它们是快速阅读 批处理文件:另一种选择是将vcredit_x64.exe文件与主安装程序分开,并将MSI和vcredit_x64.exe压缩到zip存档中,并在其中放置一个Install.cmd批处理文件,以安装vcredit先是MSI文件,然后是MS

合并模块:Installshield Lite是否支持合并模块?如果是这样,您可以使用合并模块而不是
vcredit_x64.exe
文件安装vcredit。这对于UWP应用(通用CRT)是不够的,如以下链接所述:

一定要直接阅读上面的链接——它们是快速阅读

批处理文件:另一种选择是将
vcredit_x64.exe
文件与主安装程序分开,并将MSI和
vcredit_x64.exe
压缩到zip存档中,并在其中放置一个
Install.cmd
批处理文件,以安装vcredit先是MSI文件,然后是MSI文件?不太整洁——必须承认。我想你可以制作一个自动调用它的自解压存档,但我已经很久没有这样做了

只需一个模型批处理文件来自下面的链接(未测试):

不确定安全修复之类的东西。之后是否运行Windows Update

安全修补程序和下载链接:此运行时有太多安全修补程序,并且通常安装在大多数计算机上,坦白说,我只需链接到最新版本的下载,并让人们自己安装,而不是在我的设置中捆绑过时的版本,但这还不够,除非你的软件包只供公司使用(在这种情况下,他们更喜欢安装自己的运行时,完全控制)


一些链接(便于查找):

  • 安装命令行,未经我测试
  • (请核对)
  • (请务必阅读此)

    • 感谢您的全面回答。我相信这会帮助很多人。我发现,在安静模式下从命令行运行vc_redist.x86确实可以正常工作。换句话说,如果没有安装,它将被安装。如果它已经安装或安装了更高版本,它将返回,没有任何投诉。使用InstallShield Lite 2018的情况并非如此(所有早期版本都是如此)。
      然而,正如我发现的,有一个简单的解决方案可以让它工作。只需在PRQ文件的行为部分包含Hidden=“1”项。现在将有一个条目如下所示:

       <behavior Hidden="1" Failure="4" Reboot="2"/>
      
      
      

      这就解决了问题。它不再使用自己的GUI与installshield安装程序分开运行,而是消息现在显示在installshield的菜单中,它的运行方式与在命令行上运行它完全相同。没有更多错误。

      InstallShield Lite支持合并模块,但不存在任何模块。VS 2018版本中也没有。
       <behavior Hidden="1" Failure="4" Reboot="2"/>