- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Visual C++ 2019 x64 Prerequisite fails when Visual C++ 2017 x64 is installed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
Trying to post this again, because my previous post got marked as spam for some reason?
I'm experiencing the following behavior with my prerequisite, but not when the Visual C++ 2019 installer is run outside of InstallShield. My colleague and I both experience the following repeatable behavior.
- When Visual C++ 2017 (x64) redistributables are installed, the InstallShield installer fails after installing Visual C++ 2015-2019 (x64) redistributables.
- When Visual C++ 2017 (x64) redistributables are not installed, it succeeds through both prerequisites and the main installer.
Since Visual C++ 2015-2019 (x64) replaces the Visual C++ 2017 (x64) redistributables, to reproduce the issue, you must uninstall Visual C++ 2015-2019 (x64), and reinstall Visual C++ 2017 (x64).
I've created a version of the prerequisite that logs the installation of Visual C++, and got the attached logs. Screenshots of my prerequisite configuration are also attached.
If anyone has any idea what is wrong, please help! I'd like this to work, and this installer must be delivered very soon!
As a workaround, I was able to successfully install by adapting spiderlily's prerequisite as follows:
- remove /norestart command line flag in 'Application to Run' tab
- In the 'Behaviour' tab, set 'If the prerequisite appears to need a reboot' to 'Prompt the user only if no reboot is detected, but always reboot the machine and resume on reboot'
On a system that already had VC++ 2017 (or VC++ 2015) merge modules installed, the setup will now install the 2019 prerequisite, then interrupt the setup asking for reboot, and resume and finish the setup after reboot (and user logged in again).
If you would like to handle reboot at the end of the main installation then you can choose either of the below options from the prerequisite behavior tab
- Note it, fail to resume if the machine is rebooted, and reboot after the installation
- Ignore it, and fail to resume if machine is rebooted
Below link has more details.
Yes, those settings suppose to skip reboot flow and allow main installation to continue. Could you please try and let me know if it works for you?
This behavior is due to InstallShield setup detecting pending reboot based on PendingFileRenameOperations value (set by microsoft 2019 installer) as documented below.
https://helpnet.flexerasoftware.com/installshield24helplib/helplibrary/SetupPrereqEditorRestart.htm
I think setup will automatically resume post rebooting the machine. You can try setting different option in the prerequisite behavior tab when reboot is detected.
More details are below:
You will see below entries in the log file if you run your setup using "setup.exe /debuglog" command,
9-18-2019[04:37:35 PM]: Creating new process for prerequisite, launching command line C:\InstallShield 2019 Projects\2019x64\Product Configuration 1\Release 1\DiskImages\DISK1\ISSetupPrerequisites\{D169431C-80C2-4463-B5E3-DFAA867EC507}\vc_redist.x64.exe [open] /q
9-18-2019[04:37:39 PM]: Prerequisite process exited with return code 0
9-18-2019[04:37:39 PM]: PrereqEngine: Return Code from EXE: 0
9-18-2019[04:37:39 PM]: PrereqEngine: Reboot required - PendingFileRenameOperations value added
9-18-2019[04:37:39 PM]: PrereqEngine: Reboot Required
Try installing Visual C++ 2015-2019 (x64) installer manually on top of Visual C++ 2017 (x64) installed, and observe PendingFileRenameOperations value under "Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager". Visual C++ 2015-2019 installer is updating this key value with the names of files to be renamed when the system restarts.
InstallShield setup keeps track of PendingFileRenameOperations key count before and after the InstallShield prerequisite is run. If these numbers are not the same, it is assumed that the file is trying to restart the system and exit the installation.
Thank you for replying, Varaprasad. When I run the VC++ redist installer manually, it does not prompt me to reboot. In previous installers I built with InstallShield, I included earlier versions of the VC++ redist and other redistributables as prerequisites. They did not crash, but allowed the InstallShield installer to finish, and I added an InstallShield dialog at the end to prompt the user to reboot. This seemed to correct some runtime issues we experienced. I can certainly do the same thing here - prompt for the user to reboot at the end of installation, but currently, the VC++ redist installer breaks out of the InstallShield installer altogether and crashes it before our application is installed.
Hi spiderlily,
can you post a link to your problem report in the VS community, please?
We are having exactly the same issue and need a solution for the problem as well.
When does Flexera plan to provide a working (or any, for that case) VC2019 prerequisite for Installshield professional?
Sure! I'm sorry you're having this problem too, but it's kinda nice to hear it's not just me! 🙂
Thanks for the link!
For the record, we are using Installshield 2019 professional.
This problem occurs for me when using InstallShield 2016 Professional.
This problem is still an issue. Microsoft has officially concluded, that the problem belongs to Installshield, see issue reported to Microsoft
As a workaround, I was able to successfully install by adapting spiderlily's prerequisite as follows:
- remove /norestart command line flag in 'Application to Run' tab
- In the 'Behaviour' tab, set 'If the prerequisite appears to need a reboot' to 'Prompt the user only if no reboot is detected, but always reboot the machine and resume on reboot'
On a system that already had VC++ 2017 (or VC++ 2015) merge modules installed, the setup will now install the 2019 prerequisite, then interrupt the setup asking for reboot, and resume and finish the setup after reboot (and user logged in again).
Thanks, @gogogroundhog. This workaround may help some people. In my case, I'm not sure our users will want to reboot in the middle of the installation, and again at the end.
I'd rather Microsoft accept responsibility for the problem and fix it, or have InstallShield make some change to accommodate whatever unexpected return value the VC++ 2019 redist installer is sending. I was dismayed that Microsoft closed the issue, and I don't know how I can get the attention of InstallShield developers to see if they can provide a fix on the IS side.
If you would like to handle reboot at the end of the main installation then you can choose either of the below options from the prerequisite behavior tab
- Note it, fail to resume if the machine is rebooted, and reboot after the installation
- Ignore it, and fail to resume if machine is rebooted
Below link has more details.
Thank you, @Varaprasad. The prerequisite is set for /install /quiet /norestart. The Behavior is set to "Exit and resume on reboot" if the prerequisite appears to need a reboot. I include the SdFinishReboot dialog in OnFirstUIAfter(), so that the user will be prompted to reboot after all of the prerequisites and my software are installed. However, the problem is that the VC++ 2019 prerequisite crashes the rest of the installer. Are you saying that those settings will prevent it from crashing, and it will continue to the end of the installation?
Yes, those settings suppose to skip reboot flow and allow main installation to continue. Could you please try and let me know if it works for you?
It looks like your suggested setting prevents the problem. I still don't understand why the VC++ doesn't prompt for a reboot when you run it outside of InstallShield, but it does when it's run inside InstallShield as a prerequisite?
I will mark your solution as the fix, but I will wait a little bit, in case you have any ideas why VC++ behaves differently, and how to know in the future that a prerequisite requires a reboot if the external installer doesn't request it when run by itself.
@SpiderLily1
Hi,
Can you share the PRQ that you are using for the VC++ 2015-2019 prerequisite that you are using ?
I'm not certain I do it properly on my side.
Thanks.
Max.
Apparently I cannot. When I try to attach, I get "The file type (.prq) is not supported. Valid file types are: 7z, aacx, bat, bin, config, csv, dat, dl, dll, docx, eml, gif, gz, iap_xml, ini, irp, ism, issuite, jpg, lax, lic, log, mp4, msi, mst, ndi, opt, pdf, png, ppt, pptx, properties, ps1, request, response, return, rl, rul, sh, sln, tar, tar.gz, txt, vbs, xlsx, xml, zip, sql, rdp, xls, msg."
well, that's awkward. 🙂
Maybe you could copy and paste the PRQ text here (remove anything that is sensitive) ?
Max.
Hi @SpiderLily1 ,
Please check the InstallShield KB article and hotfix installer for the VC++ 2019 restart issue.