Bootstrapper freezes with /q when it has a given size

Jul 21, 2011 at 3:20 PM

Dear developers: I'm facing a problem with the bootstrapper, everytime I set it a size (dialog_position attribute) lets say width: 800 height: 600, and then the executable file generated is run with /q parameter through console it shows a window with the given size for a few seconds, in the background it works properly but that window should not be shown as I am running it in Silent Mode. So the steps to repro would be the followings: set a width and height to the bootstrapper in the configuration, run it this way: youexecutablefile /q (to install it) or yourexecutablefile /q /x (to uninstall it) in both situations a locked-window will be shown for a few seconds. 

Have you ever had this problem? can you reproduce it? Do you have a solution for it or any idea that could help?

Please anything that could be helpfull let me know. 

Thanksss!!! 

Jul 22, 2011 at 1:45 PM

You should file a bug. Specify which exact build of DNI you're using, whether it's dotNetInstaller.exe or htmlInstaller.exe, etc. I think this is just a bug that nobody saw and it will need some digging to figure out how to fix. Patches always welcome.

Aug 2, 2011 at 4:05 PM
Edited Aug 2, 2011 at 4:06 PM

Hi I think I may have a solution but I was not be able to test it yet due to build problems:

"C:\DotNetInstaller\trunk\InstallerMsi\InstallerMsi.wixproj" (Clean target) (14) ->(_SetDefaultPathValues target) ->  C:\DotNetInstaller\trunk\ThirdParty\Wix\wix200x.targets(447,5): error
MSB4062: The "ReadRegistry" task could not be loaded from the assembly C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\WixTasks.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\WixTasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, and that the assembly and all its dependencies are available.

What I think that could fix the window-freezes-when-running-in-silent-mode issue is:

In dotNetInstallerDlg.cpp file line 93 ... 94 there are a few lines that calls the method MoveWindow and sets the properties for the dialog position and components position, if we check before if it is not ran in Silent mode it could fix it (because when it is ran in silent mode we do not need to set window sizes . positions as they are not visible) ...

Finally the result would be doing something like this in the given lines:

        if (! InstallUILevelSetting::Instance->IsSilent())
        {
            MoveWindow(* this, p_configuration->dialog_position);
            MoveWindow(m_ListBoxComponents, p_configuration->dialog_components_list_position);
            MoveWindow(m_lblMessage, p_configuration->dialog_message_position);
            MoveWindow(m_PictureBox, p_configuration->dialog_bitmap_position);
            MoveWindow(m_InfoLink, p_configuration->dialog_otherinfo_link_position);
            MoveWindow(m_lblOperatingSystem, p_configuration->dialog_osinfo_position);
            MoveWindow(m_btnInstall, p_configuration->dialog_install_button_position);
            MoveWindow(m_btnCancel, p_configuration->dialog_cancel_button_position);
            MoveWindow(m_btnSkip, p_configuration->dialog_skip_button_position);
        }


But as I said before I was not able to test it yet due to compilation errors. What do you think?

Juan .-

Aug 2, 2011 at 5:38 PM

You need Wix 3.5 to build the entire DNI. But you can just build dotNetInstaller.exe from Visual Studio and test it. I'll take any patch that has actually been tested - this is a bit of guessing :)

Aug 2, 2011 at 6:13 PM

Yes, I am gonna test it before sending the patch...I just wanted to give you an idea of what error I am facing (thanks for your reply i will try with wix 3.5) and in the meantime as I was gonna write i decided to write a little bit about what MIGHT be the cause...I will try with 3.5...test it and finally if it works ...I will send you a patch...Thanks!!! :D