SpiderLily1
Intrepid explorer

Visual C++ 2019 x64 Prerequisite fails when Visual C++ 2017 x64 is installed

Jump to solution

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!

Labels (1)
0 Kudos
3 Solutions

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).

View solution in original post

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.

https://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/UIRefPrereqEditor_Behavior.ht...

View solution in original post

0 Kudos

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?

View solution in original post

0 Kudos
20 Replies
Varaprasad
Flexera
Flexera

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.

0 Kudos

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.

0 Kudos
One other thing. I suspected that this might be a problem with the VC++ redist installer itself, so I also posted about this problem in the Visual Studio Developer Community. The status "under investigation."
0 Kudos
gogogroundhog
Occasional contributor

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?

0 Kudos

Sure!  I'm sorry you're having this problem too, but it's kinda nice to hear it's not just me!  🙂

https://developercommunity.visualstudio.com/content/problem/734287/visual-c-2019-redistributables-cr...

0 Kudos
gogogroundhog
Occasional contributor

Thanks for the link!

For the record,  we are using Installshield 2019 professional. 

0 Kudos

This problem occurs for me when using InstallShield 2016 Professional.

0 Kudos
gogogroundhog
Occasional contributor

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).

View solution in original post

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.

0 Kudos

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.

https://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/UIRefPrereqEditor_Behavior.ht...

View solution in original post

0 Kudos

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?

0 Kudos

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?

View solution in original post

0 Kudos

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.

0 Kudos

@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.

 

0 Kudos

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."

0 Kudos

well, that's awkward. 🙂 


Maybe you could copy and paste the PRQ text here (remove anything that is sensitive) ? 


Max.

0 Kudos

I pasted the prerequisite settings as images into the attached Word document.  I hope that helps.  There's nothing sensitive, or even specific to my software, in this.

0 Kudos
I also circled the setting in green that is the solution for the original problem in this post.
0 Kudos
banna_k
Flexera
Flexera

Hi @SpiderLily1 ,

 

Please check the InstallShield KB article and hotfix installer for the VC++ 2019 restart issue.

https://community.flexera.com/t5/InstallShield-Knowledge-Base/InstallShield-VC-2019-Prerequisite-res...

0 Kudos