使用InstallShield Lite安静地安装VC_REDIST.X86

问题描述 投票:1回答:2

我一直在试图安装需要使用InstallShield lite的C ++可再发行组件(2017 x86)的软件。首先,我定义了一个先决条件包含C ++可再发行组件。当用户尝试安装时,将始终显示用户界面。现在这不是一个真正的问题,但是,如果已经安装了可再发行版本或者有更新的版本,那么它将失败并显示失败的消息,并且它会询问用户是否要继续或中止安装。如果他选择继续,则软件安装正常。这不是非常用户友好。尽管使用了正确的命令行开关,即/ q / norestart,但仍会发生这种情况。如果您在命令提示符下手动执行此操作,它将按预期运行。换句话说,它安装它,或失败,因为它已经安装但没有告诉用户。这是它应该工作的方式。现在我尝试在installshield脚本的末尾执行此操作作为自定义操作,但随后安装似乎挂起在某些计算机上以及其他错误上。现在唯一的线索是,如果我创建一个MSI安装,那么它永远不会提示。但是使用setup.exe安装时,其行为与上面相同。如果我正在安装64位应用程序,我只使用msi安装成功。永远不会使用32位应用程序。有人可以指导我做错误吗?谢谢

installation installshield redistributable
2个回答
1
投票

VCRedist:这个C / C ++运行时(各种版本和版本)确实很痛苦。我决定写一些东西,试图总结一些事情:Wix per user installer to detect the Visual C++ 2015 Redistributable(请至少略读 - 不是很好,比我希望的更好 - 主要是检测运行时的存在)。


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

请直接阅读上面的链接 - 它们是快速读取。

批处理文件:另一种选择是将VCRedist_x64.exe文件与主设置分开并在ZIP存档中压缩你的MSI和VCRedist_x64.exe并在其中放置一个Install.cmd批处理文件,它将首先安装VCRedist然后安装你的MSI文件?不太整洁 - 人们不得不承认。我认为你可以创建一个自动调用它的自解压存档,但我已经很久没有这样做了。

只是来自下面链接的模拟批处理文件(未经测试):

REM 1. Install VCRuntime
vc_redist.x64.exe /install /quiet /log "%temp%\Install_vc_redist_2017_x64.log"

REM 2. Install MSI
msiexec.exe /i MySetup.msi /L*v C:\MySetup.log /QN

不确定安全修复程序和那种东西。之后运行Windows Update?

安全修复和下载链接:这个运行时有很多安全修复程序,它通常安装在大多数机器上,我坦率地说只是链接到最新版本的下载,让人们自己安装它作为预先安装必要的,而不是在我的设置中捆绑一个过时的版本,但这是不够的,除非你的包只供企业使用(在这种情况下,他们更喜欢安装自己的运行时完全控制)。


一些链接(轻松找到):


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.