Allow_Continue_On_Error=true is not adhered to in Silent mode

Jun 4, 2010 at 2:44 PM

When my setup package runs in full UI, it prompts the user with "Failed to install XYZ. Continue with others components?" and I can click "yes" to continue, but when I attempt the same in quiet mode, it dies as soon as my MSU component fails to install. I have allow_continue_on_error=true and auto_close_on_error=false.

My setup needs to run in quiet mode with no user intervention. Any ideas?

Jun 8, 2010 at 2:33 AM

I think you misunderstand allow_continue_on_error. It's allowing the user to continue vs. a hard stop. In silent mode that has no effect and the installation fails. I'll add an option to control that for 1.10, stay tuned.

Jun 8, 2010 at 4:08 PM

Please try build 1.10.9219.0. I added default_allow_continue_on_error to components. It sets the default value of the selection when allow_continue_on_error is set to True. In UI mode, sets the default dialog selection for the prompt. In silent mode allows to continue on failure. Let me know if this works.

Jun 8, 2010 at 9:44 PM

Great, works now but the auto run on reboot of a component is broken, I have mustreboot=true but no luck, tried with both a combination of MSI initiated reboot and another one with me suppressing the reboot with /norestart and letting dotNetInstaller do the reboot, no luck in both cases.

Jun 9, 2010 at 12:40 AM

Can you be more specific about in what way it doesn't work? You mean it doesn't automatically reboot (in which case?).

Jun 9, 2010 at 2:32 PM

If I supress the MSI/MSP initiated reboot with /norestart, and just have mustreboot=true on the component , then restart doesnt work.

If I have the MSI/MSP initiate the reboot and also have mustreboot=true on the component , then the machine does restart but Setup bootstrapper doesnt relaunch and continue installing the remaining components.



Jun 9, 2010 at 4:05 PM

Okay, mustreboot is a bug, fixed in build 1.10.9243.0. Thanks for reporting it. It's one of those options that people don't use (and you should avoid), since it's only necessary for really old installers. I also edited the doc on handling reboots and tried to make it clearer.

Now, is your component an MSI or MSP or is it an EXE or CMD component? 

  • If it's an MSI, you should suppress reboot and the rest should be handled for you. This can usually be done with NOREBOOT=1 on the command line. MSIs are standard things and return 3010 when a reboot is required. dotNetInstaller will understand that and do the right thing.
  • If it's an EXE/CMD, you should suppress reboot with, for example, /norestart, and specify 3010 in returncodes_reboot. That is assuming the .EXE properly returns 3010 when a reboot is required, which is all of the setup.exe's that I have ever seen (they are usually bootstrappers, eg. .NET Framework's dotnetfx.exe). This will tell dotNetInstaller that the component triggered a reboot and it will act accordingly. If you don't suppress the reboot in the component, then it will simply reboot and dotNetInstaller will not have the opportunity to know something is rebooting the machine, and hence has no way of writing the information required for it to resume (that's what you're seeing).