Multiple Downloads: Only first works

Jul 21, 2009 at 12:26 PM

Hi,

another download issue happend to me: I have multiply download components, e. g. one for .Net Framework 3.5 and one for .Net Compact Framwork 3.5.
If a setup file is not present locally, it should get downloaded (if this is relevant). The first download (normal .Net Framwork) component gets started correctly, downloads the file and executes it. The following, second download component (.Net CF) gets also started, but immediately after pressing "Start" (for starting the downoad) the error message gets shown that "the installation of this component failed" and if I want to continue with other components.

If I now restart the setup, the first download component is detected correctly as installed (the normal .Net Framwork) and the .Net CF is still missing. This time, the download works without problems.

Regards,
Tom

Jul 21, 2009 at 5:10 PM
Edited Jul 21, 2009 at 5:11 PM

I can't reproduce this with the current 1.7.26143.0. I did find one bug though where the error was not properly reported so it might be difficult to figure out what's going on. I fixed that and wrote a test that does two downloads, which worked. Give 1.7.26143.0 a shot and if it still fails, run with /log /logfile install.log and attach the configuration file and the log here.

Thx
-dB.

Jul 21, 2009 at 9:36 PM
Edited Jul 21, 2009 at 10:06 PM

I tested again with 26161: The download of both components works now, but I noticed two things:
1. The download progress is not shown anymore. Only "Download in progress. Wait..." is shown, but no progress bar, speed or downloaded data amount.
2. The boostrapper got closed by windows while the second downloaded component (.Net CF) was executed. Windows showed a dialog that the boostrapper has encountered an error occured and has to be closed. (the standard error report dialog) - it is reproducable.

Point 1 happend in Vista and XP, point 2 only in XP.
Edit: Point 2 happend also in Vista, but the error occued some moments later.

Regards,
Tom

Jul 21, 2009 at 9:45 PM
Edited Jul 21, 2009 at 9:46 PM

Can I please have your config file and a log? Thx.

Jul 21, 2009 at 11:28 PM
Edited Jul 21, 2009 at 11:45 PM

The log:

2009-07-22 00:24:05 -------------------------------------------------------------------
2009-07-22 00:24:05 dotNetInstaller (DNI) started, version 1.7.26161.0
2009-07-22 00:24:05 Copyright (c) DevAge, Vestris Inc. & Contributors
2009-07-22 00:24:05 Operating system: Windows Vista Sp1
2009-07-22 00:24:05 -------------------------------------------------------------------
2009-07-22 00:24:05 Loaded configuration from embedded resource 'RES_CONFIGURATION'
2009-07-22 00:24:05 Loaded schema: version=1.7.26161.0, generator=dotNetInstaller InstallerEditor
2009-07-22 00:24:05 Read file attribute: name=LegalCopyright, value=Copyright (c) C-Techniken 2009
2009-07-22 00:24:05 Read file attribute: name=CompanyName, value=C-Techniken
2009-07-22 00:24:05 Read file attribute: name=ProductName, value=TheoCAD
2009-07-22 00:24:05 Read 3 file attribute(s)
2009-07-22 00:24:05 Loaded 'file' installed check 'C:\Windows\system32\msi.dll'
2009-07-22 00:24:05 Loaded 'cmd' component 'Windows Installer > v3.1'
2009-07-22 00:24:05 Loaded 'registry' installed check 'HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install'
2009-07-22 00:24:05 Loaded 'download' dialog component 'Microsoft .NET Framework 3.5', source=http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe
2009-07-22 00:24:05 Loaded 'download' configuration 'Microsoft .NET Framework 3.5 - Herunterladen der Komponenten' with 1 file(s)
2009-07-22 00:24:05 Loaded 'cmd' component 'Microsoft .NET Framework 3.5'
2009-07-22 00:24:05 Loaded 'download' dialog component 'Microsoft .NET Compact Framework 3.5', source=http://download.microsoft.com/download/3/4/c/34cb3ff0-afff-4cf2-9b63-120efa654984/NetCFSetupv35.msi
2009-07-22 00:24:05 Loaded 'download' configuration 'Microsoft .NET Compact Framework 3.5 - Herunterladen der Komponenten' with 1 file(s)
2009-07-22 00:24:05 Loaded 'msi' component 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\de\NETCFSetupv35.msi'
2009-07-22 00:24:05 Read 'embedfile', source=E:\dev\TheoCAD\trunk\Setup\Release\\..\TheoCAD Installer-DE.msi, target=
2009-07-22 00:24:05 Loaded 'msi' component 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-DE.msi'
2009-07-22 00:24:05 Loaded 4 component(s) from configuration type=1 (lcid=1031, os_filter_greater=80, os_filter_smaller=, processor_architecture_filter=)
2009-07-22 00:24:05 Loaded 'file' installed check 'C:\Windows\system32\msi.dll'
2009-07-22 00:24:05 Loaded 'cmd' component 'Windows Installer > 3.1'
2009-07-22 00:24:05 Loaded 'registry' installed check 'HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install'
2009-07-22 00:24:05 Loaded 'download' dialog component 'Microsoft .NET Framework 3.5', source=http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe
2009-07-22 00:24:05 Loaded 'download' configuration 'Microsoft .NET Framework 3.5 - Download Components' with 1 file(s)
2009-07-22 00:24:05 Loaded 'cmd' component 'Microsoft .NET Framework 3.5'
2009-07-22 00:24:05 Loaded 'download' dialog component 'Microsoft .NET Compact Framework 3.5', source=http://download.microsoft.com/download/c/b/e/cbe1c611-7f2f-4bcf-921d-2df718591e1e/NETCFSetupv35.msi
2009-07-22 00:24:05 Loaded 'download' configuration 'Microsoft .NET Compact Framework 3.5 - Download Components' with 1 file(s)
2009-07-22 00:24:05 Loaded 'msi' component 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en\NETCFSetupv35.msi'
2009-07-22 00:24:05 Read 'embedfile', source=E:\dev\TheoCAD\trunk\Setup\Release\\..\TheoCAD Installer-EN.msi, target=
2009-07-22 00:24:05 Loaded 'msi' component 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-EN.msi'
2009-07-22 00:24:05 Loaded 4 component(s) from configuration type=1 (lcid=!1031, os_filter_greater=80, os_filter_smaller=, processor_architecture_filter=)
2009-07-22 00:24:05 --- Read 2 configuration(s)
2009-07-22 00:24:05 -- Windows Installer > 3.1 (os_filter_lcid=, os_filter_greater=74, os_filter_smaller=90, processor_architecture_filter=): SKIPPED
2009-07-22 00:24:05 -- Microsoft .NET Framework 3.5 (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:05 -- Microsoft .NET Compact Framework 3.5 (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:05 -- TheoCAD (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:05 --- Loaded 3 supported component(s)
2009-07-22 00:24:05 Reading Registry: Software\Microsoft\NET Framework Setup\NDP\v3.5\Install
2009-07-22 00:24:05 Registry key found: Software\Microsoft\NET Framework Setup\NDP\v3.5\Install
2009-07-22 00:24:05 Registry value: 1
2009-07-22 00:24:05 Check value: 1
2009-07-22 00:24:05 -- Microsoft .NET Framework 3.5: INSTALLED
2009-07-22 00:24:05 -- Microsoft .NET Compact Framework 3.5: NOT INSTALLED
2009-07-22 00:24:05 -- TheoCAD: NOT INSTALLED
2009-07-22 00:24:09 Extracting Setup.cab
2009-07-22 00:24:09 Cabpath: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}
2009-07-22 00:24:09 TempFile: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\setup.cab
2009-07-22 00:24:09 Extracting: RES_CAB1
2009-07-22 00:24:11 Extracted: RES_CAB1
2009-07-22 00:24:11 Extracted all resource segments
2009-07-22 00:24:11 Extracting: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-DE.msi
2009-07-22 00:24:11 Done: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-DE.msi
2009-07-22 00:24:11 Extracting: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-EN.msi
2009-07-22 00:24:12 Done: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\TheoCAD Installer-EN.msi
2009-07-22 00:24:12 Extracted CAB: C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\setup.cab
2009-07-22 00:24:12 ExtractComponent: extracted Setup.cab
2009-07-22 00:24:13 -- Windows Installer > 3.1 (os_filter_lcid=, os_filter_greater=74, os_filter_smaller=90, processor_architecture_filter=): SKIPPED
2009-07-22 00:24:13 -- Microsoft .NET Framework 3.5 (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:13 -- Microsoft .NET Compact Framework 3.5 (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:13 -- TheoCAD (os_filter_lcid=, os_filter_greater=, os_filter_smaller=, processor_architecture_filter=): LOADED
2009-07-22 00:24:13 --- Loaded 3 supported component(s)
2009-07-22 00:24:13 --- Component 'Microsoft .NET Framework 3.5': SKIPPED
2009-07-22 00:24:13 --- Component 'Microsoft .NET Compact Framework 3.5': EXECUTING
2009-07-22 00:24:13 Opening download dialog 'Microsoft .NET Compact Framework 3.5 - Download Components'
2009-07-22 00:24:13 Destination 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en\NETCFSetupv35.msi', exists=False, download=True
2009-07-22 00:24:15 Downloading 'Microsoft .NET Compact Framework 3.5', source='http://download.microsoft.com/download/c/b/e/cbe1c611-7f2f-4bcf-921d-2df718591e1e/NETCFSetupv35.msi', destination='C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en', full='C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en\NETCFSetupv35.msi', always download=False
2009-07-22 00:24:15 Creating directory 'C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en'
2009-07-22 00:24:18 Download 'Microsoft .NET Compact Framework 3.5', size=33.3MB: OK
2009-07-22 00:24:18 --- Download OK
2009-07-22 00:24:18 Executing: msiexec /I "C:\Users\MRPRIN~1\AppData\Local\Temp\\{A2C63B8B-9763-4587-A5B8-AD2AAE1B455E}\en\NETCFSetupv35.msi"

And the configuration file:

 <?xml version="1.0" encoding="utf-8"?>
<configurations lcid_type="System" configuration_no_match_message="" ui_level="full" fileversion="" productversion="1.0">
  <schema version="1.7.26161.0" generator="dotNetInstaller InstallerEditor" />
<fileattributes>
  <fileattribute name="LegalCopyright" value="Copyright (c) C-Techniken 2009" />
  <fileattribute name="CompanyName" value="C-Techniken" />
  <fileattribute name="ProductName" value="TheoCAD" />
  </fileattributes>
  <configuration dialog_caption="TheoCAD Installer" dialog_message="Um TheoCAD zu installieren müssen folgende Komponenten vorhanden sein:" dialog_bitmap="#APPPATH\Images\banner.bmp" skip_caption="Skip" install_caption="Install" cancel_caption="Schließen" status_installed=" (Installiert)" status_notinstalled="" failed_exec_command_continue="Fehler beim Installieren von %s. Mit weiteren Komponenten fortfahren?" installation_completed="TheoCAD wurde erfolgreich installiert!" installation_none="" installing_component_wait="Installiere %s. Bitte warten. Dieser Vorgang kann einige Zeit in Anspruch nehmen ..." reboot_required="Um mit der Installation fortzufahren müssen Sie den Computer neu starten. Jetzt neustarten?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" auto_close_if_installed="True" auto_close_on_error="False" allow_continue_on_error="True" dialog_show_installed="True" dialog_show_required="True" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" log_enabled="True" log_file="#TEMPPATH\dotNetInstallerLog.txt" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="0,0,110,208" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" type="install" lcid="1031" os_filter_greater="80" os_filter_smaller="" processor_architecture_filter="">
  <component command="&quot;#APPPATH\SupportFiles\WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe&quot;" command_silent="" command_basic="" os_filter_greater="74" os_filter_smaller="90" os_filter_lcid="" type="cmd" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="Windows Installer &gt; v3.1" note="Windows Installer &gt; v3.1" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <installedcheck filename="#SYSTEMPATH\msi.dll" fileversion="3.1.0.0" comparison="version" type="check_file" description="Installed Check" />
  </component>
  <component command="&quot;#CABPATH\de\dotnetfx35.exe&quot; /q:a /c:&quot;install /qb&quot;" command_silent="" command_basic="" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="cmd" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="Microsoft .NET Framework 3.5" note="English - Standard - .NET Framework 3.5" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <installedcheck path="Software\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="Install" fieldvalue="1" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
  <downloaddialog dialog_caption="Microsoft .NET Framework 3.5 - Herunterladen der Komponenten" dialog_message="Drücken Sie 'Start' um das Microsoft .NET Framework 3.5 herunterzuladen. Damit TheoCAD LT auf dem PC funktioniert ist dies notwendig." dialog_message_downloading="Dateien werden heruntergeladen. Bitte warten..." dialog_message_connecting="Connecting ..." dialog_message_sendingrequest="Sending request ..." autostartdownload="False" buttonstart_caption="Start" buttoncancel_caption="Abbruch">
  <download componentname="Microsoft .NET Framework 3.5" sourceurl="http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe" sourcepath="#APPPATH\SupportFiles\de\dotNet3.5\dotnetfx35.exe" destinationpath="#CABPATH\de" destinationfilename="dotnetfx35.exe" alwaysdownload="False" />
  </downloaddialog>
  </component>
  <component package="#CABPATH\de\NETCFSetupv35.msi" cmdparameters="" cmdparameters_silent="/qn" cmdparameters_basic="/qb" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="msi" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" required="False" description="Microsoft .NET Compact Framework 3.5" note="German - Standard - .NET Compact Framework 3.5" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <downloaddialog dialog_caption="Microsoft .NET Compact Framework 3.5 - Herunterladen der Komponenten" dialog_message="Wenn Sie die Software auf dem PDA installieren möchten, drücken Sie 'Start' um das benötigte Microsoft .NET Compact Framework 3.5 herunterzuladen." dialog_message_downloading="Dateien werden heruntergeladen. Bitte warten..." dialog_message_connecting="Connecting ..." dialog_message_sendingrequest="Sending request ..." autostartdownload="False" buttonstart_caption="Start" buttoncancel_caption="Abbruch">
  <download componentname="Microsoft .NET Compact Framework 3.5" sourceurl="http://download.microsoft.com/download/3/4/c/34cb3ff0-afff-4cf2-9b63-120efa654984/NetCFSetupv35.msi" sourcepath="#APPPATH\SupportFiles\dotNet3.5_CF\de\NETCFSetupv35.msi" destinationpath="#CABPATH\de" destinationfilename="NETCFSetupv35.msi" alwaysdownload="False" />
  </downloaddialog>
  </component>
  <component package="#CABPATH\TheoCAD Installer-DE.msi" cmdparameters="" cmdparameters_silent="" cmdparameters_basic="/qb" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="msi" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="TheoCAD" note="" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <embedfile sourcefilepath="#APPPATH\..\TheoCAD Installer-DE.msi" targetfilepath="" />
  </component>
  </configuration>
  <configuration dialog_caption="TheoCAD Installer" dialog_message="In order to install TheoCAD you must first install these components:" dialog_bitmap="#APPPATH\Images\banner.bmp" skip_caption="Skip" install_caption="Install" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="Failed to install %s. Continue with others components?" installation_completed="TheoCAD installed successfully !" installation_none="" installing_component_wait="Installing %s . Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" auto_close_if_installed="True" auto_close_on_error="False" allow_continue_on_error="True" dialog_show_installed="True" dialog_show_required="True" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="True" log_enabled="True" log_file="#TEMPPATH\dotNetInstallerLog.txt" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="0,0,110,208" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" type="install" lcid="!1031" os_filter_greater="80" os_filter_smaller="" processor_architecture_filter="">
  <component command="&quot;#APPPATH\SupportFiles\WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe&quot;" command_silent="" command_basic="" os_filter_greater="74" os_filter_smaller="90" os_filter_lcid="" type="cmd" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="Windows Installer &gt; 3.1" note="Windows Installer &gt; 3.1" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <installedcheck filename="#SYSTEMPATH\msi.dll" fileversion="3.1.0.0" comparison="version" type="check_file" description="Installed Check" />
  </component>
  <component command="&quot;#CABPATH\en\dotnetfx35.exe&quot; /q:a /c:&quot;install /qb&quot;" command_silent="" command_basic="" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="cmd" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="Microsoft .NET Framework 3.5" note="English - Standard - .NET Framework 3.5" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <installedcheck path="Software\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="Install" fieldvalue="1" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
  <downloaddialog dialog_caption="Microsoft .NET Framework 3.5 - Download Components" dialog_message="Press 'Start' to download the required components for installing Microsoft .NET Framework 3.5." dialog_message_downloading="Download in progress. Wait..." dialog_message_connecting="Connecting ..." dialog_message_sendingrequest="Sending request ..." autostartdownload="False" buttonstart_caption="Start" buttoncancel_caption="Cancel">
  <download componentname="Microsoft .NET Framework 3.5" sourceurl="http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe" sourcepath="#APPPATH\SupportFiles\dotNet3.5\en\dotnetfx35.exe" destinationpath="#CABPATH\en" destinationfilename="dotnetfx35.exe" alwaysdownload="False" />
  </downloaddialog>
  </component>
  <component package="#CABPATH\en\NETCFSetupv35.msi" cmdparameters="" cmdparameters_silent="/qn" cmdparameters_basic="/qb" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="msi" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" required="False" description="Microsoft .NET Compact Framework 3.5" note="English - Standard - .NET Compact Framework 3.5" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <downloaddialog dialog_caption="Microsoft .NET Compact Framework 3.5 - Download Components" dialog_message="If you want to use TheoCAD LT on a mobile device press 'Start' to download the required Microsoft .NET Compact Framework 3.5." dialog_message_downloading="Download in progress. Wait..." dialog_message_connecting="Connecting ..." dialog_message_sendingrequest="Sending request ..." autostartdownload="False" buttonstart_caption="Start" buttoncancel_caption="Cancel">
  <download componentname="Microsoft .NET Compact Framework 3.5" sourceurl="http://download.microsoft.com/download/c/b/e/cbe1c611-7f2f-4bcf-921d-2df718591e1e/NETCFSetupv35.msi" sourcepath="#APPPATH\SupportFiles\dotNet3.5_CF\en\NETCFSetupv35.msi" destinationpath="#CABPATH\en" destinationfilename="NETCFSetupv35.msi" alwaysdownload="False" />
  </downloaddialog>
  </component>
  <component package="#CABPATH\TheoCAD Installer-EN.msi" cmdparameters="" cmdparameters_silent="" cmdparameters_basic="/qb" os_filter_greater="" os_filter_smaller="" os_filter_lcid="" type="msi" installcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" required="True" description="TheoCAD" note="" processor_architecture_filter="" status_installed="" status_notinstalled="">
  <embedfile sourcefilepath="#APPPATH\..\TheoCAD Installer-EN.msi" targetfilepath="" />
  </component>
  </configuration>
</configurations>

I hope this helps.

Regars,
Tom

Edit: Put it wrong config file, is now correct.

Jul 22, 2009 at 1:46 PM

The download progress is not shown anymore can be explained. Urlmon.dll that does the download caches downloads and it will just reuse the same downloaded file. That's when you see no progress - it's copying (a rather large) file from cache. Try on a clean environment, you'll see the progress.

The crash that you're seeing is worrying me. I can't reproduce it so far. Do you know how to use a debugger - you could locate the crash for me? - Thx

Jul 22, 2009 at 6:03 PM
Edited Jul 22, 2009 at 6:09 PM

Ok, the download progress thing is understandable.

Sure, I can use a debugger and can locate the error for you. Since I wanted to some DNI hacking anyway, I could start by finding out where this crash occurs ;). I got the latest SVN sources, installed MS Community Build Tasks and Subversion but still can not build (and, as I understand it, I need to be able to build and compile in Debug mode (e. g. no optimizations and symbols)). I have to use Visual Studio 2008, since VS2005 gives all the time the following error (reinstalling does not fix it) - I use Vista:
Error: the Visual C++ Project Engine is not properly installed
(I will set up a XP VS2005 virtual machine to fix this)

In VS2008 I get the following error:
Embedding manifest...
.\dotNetInstaller.exe.manifest : manifest authoring error c1010001: Values of attribute "level" not equal in different manifest snippets.

If I build from command line, MSBuild compains about not finding the DeleteTree-Task - but I have installed community tasks.

But the gernal way should be to start the dotNetInstaller.exe with my configuration in Debug mode and see where the error occurs, correct?

Regards,
Tom

Jul 22, 2009 at 6:08 PM
Edited Jul 22, 2009 at 6:08 PM

I'll fix the manifest problem, in the meantime you can edit dotNetInstaller.exe.manifest and simply remove the line that has level=... . Everything should work fine in Visual Studio 2008, except that the produced executable can't run on Windows 98 :)

If you want the entire build to succeed from command line (build all), you'll have to change the path to Visual Studio in build.cmd too.

Jul 22, 2009 at 6:17 PM
Edited Jul 23, 2009 at 12:42 AM

ok, thanks, the line removal worked and I can compile now from within VS2008

Edit 1:
Since I did not run VS2008 with elevated permissions (the boostrapper would ask for it, too) I get the error that the application has no permissions to access the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" - and this is true ;). Isn't there any other way to get the information you need without the need for elevated permissions? Anyway, I will continue with the needed permissions set.

Edit 2:
I got the error to break into the debugger. I currently can not say much about it except that it is not directly in the DNI code, but has seems that it has to do with threading and probably while thread initialization. The call stack is:
  dotNetInstaller.exe!AfxAssertValidObject(const CObject * pOb=0x023686c0, const char * lpszFileName=0x007be570, int nLine=110) Line 99 + 0xa bytes C++
  dotNetInstaller.exe!_AfxThreadEntry(void * pParam=0x0012c6a4) Line 110 + 0x10 bytes C++
  dotNetInstaller.exe!_callthreadstartex() Line 348 + 0xf bytes C
  dotNetInstaller.exe!_threadstartex(void * ptd=0x02368740) Line 331 C
  kernel32.dll!76ae4911()  
  [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] 
  ntdll.dll!77b9e4b6()  
  ntdll.dll!77b9e489()

The actual code where it breaks is (but I doubt this is relevant in this case) - in objcore.cpp / Line 99:

if (!AfxIsValidAddress(pOb, pOb->GetRuntimeClass()->m_nObjectSize, FALSE))

It seems as an virtual function pointer inside the pOB is not readable.
I will try to find out more at the DNI side.

Edit 3:
Currently, I am tracing though the code and it seems that the error has something to do with the waiting for currently executed components. The access violation occurs after "component->Exec();" (Line 72) in file Components.cpp.

Regards,
Tom

 

 

Jul 22, 2009 at 9:41 PM
Edited Jul 22, 2009 at 10:55 PM

What type of component is executing? Make sure you build debug and maybe the call stack can have some more information (source code references)? Also do an svn update, I might have just fixed something.

Jul 23, 2009 at 1:00 AM
Edited Jul 23, 2009 at 10:12 AM

An SVN update confirmed that I did all debugging with the recent version (26197) and of course do I build in debug mode (I know that the optimizer can bring up some question marks if some breakpoints get not hit and variables have "wrong" values ;) ). Unfortunately does the call stack have no more information then the things posted above. I can go to the source locations, of course, but this is not the problematic code I think. I have no references to the point where some thread callback method (or whatever) is not set or is used. Maybe this has to do with the callback->OnComponentExecBegin(component)?

The executing component is a MSI component with download configuration (in the config file above the .NET CF component).

I put a breakpoint on component->Exec();  and a "step into" brings me into the operato->() code of the smart pointer. Everything in there is ok and I can step over it. After that I come into MsiComponent::Exec(); - On the first trys the exception occred right there at the beginning, but now it happens later. So it should have nothing to do with the code location there. From somewhere a thread callback function is called, but it does not exist (the vtable does not point to somewhere).

Hm, I continue looking for it.

Edit: Interstingly does the exception only occur if I wait some time before I press start (I currently did wait about 20 seconds). If I wait some timebefore I press "Install" in the DNI GUI. If I click it right after DNI has started, the exception is not thrown. So it seems that it has nothing to do with the concrete command.

Edit 2: It seems that the problem is somehow connected to the download dialog. Like said above has it also something to do with threading. The thread in which the exception occurs is the following:
Category: Worker Thread
Name: _threadstartex
Location: DownloadDialog::DownloadComplete

The location is some moments before the crash occus, after this method is finished, it is returned to DownloadComponents::ExecOnThread(). This method successfully returns to ThreadComponent::ExecuteThread(LPVOID pParam). After this the ThreadProc of the MFC-Thread is finished (thrdcore.cpp / Line 109) and the thread is checked with ASSERT_VALID(...) (in Line 110) - and this where the call stacks top posted before is reached. ASSERT_VALID gets replaced with AfxAssertValidObject(...).

At least is now the call stack clear... 

Edit 2: Someone in this thread has a similar problem, maybe the answer is useful to you? 

Jul 23, 2009 at 4:31 PM

I have a theory. In ThreadComponent::EndExec, remove reset(m_pThread).

Next, put a breakpoint in ~Component. This should probably never get hit until the entire thing is finished and is unwinding. If you see it hit, copy-paste the call stack.

You can drop me an e-mail to dblock at dblock dot org, I can do a webex today and debug your setup remotely if you're up to it. Thx.

Jul 23, 2009 at 10:29 PM

I commented out the reset(m_pThread) but stil, I get the exception. The destructor of Component (~Component) got hit two times before the exception was raised. Both times this happend in the Main-Thread and not in the thread were the exception occurs.

The first time, it seems,comes from the cab extraction (I copyed not the whole call stack):

MainThread:
    dotNetInstaller.exe!Component::~Component()  Line 25    C++
     dotNetInstaller.exe!ThreadComponent::~ThreadComponent()  Line 15 + 0x2f bytes    C++
     dotNetInstaller.exe!ExtractComponent::~ExtractComponent()  + 0x9c bytes    C++
     dotNetInstaller.exe!ExtractCabProcessor::~ExtractCabProcessor()  + 0x2b bytes    C++
     dotNetInstaller.exe!ExtractCabProcessor::`scalar deleting destructor'()  + 0x2b bytes    C++
     dotNetInstaller.exe!close_delete::close<Component>(Component * p=0x01c46f28)  Line 650 + 0x34 bytes    C++
     dotNetInstaller.exe!detail::nonintrusive<Component *,close_delete,null_t>::dec_ref()  Line 144 + 0xb bytes    C++
     dotNetInstaller.exe!detail::shared_holder<detail::nonintrusive<Component *,close_delete,null_t> >::~shared_holder<detail::nonintrusive<Component *,close_delete,null_t> >()  Line 74    C++
     dotNetInstaller.exe!shared_any<Component *,close_delete,null_t,0>::~shared_any<Component *,close_delete,null_t,0>()  + 0x2b bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::ExtractCab()  Line 367 + 0xf bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::OnBnClickedInstall()  Line 237    C++
     dotNetInstaller.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012f1fc, unsigned int nID=1000, int nCode=0, void (void)* pfn=0x005357fb, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 82    C++
     dotNetInstaller.exe!CCmdTarget::OnCmdMsg(unsigned int nID=1000, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 381 + 0x27 bytes    C++
     dotNetInstaller.exe!CDialog::OnCmdMsg(unsigned int nID=1000, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 85 + 0x18 bytes    C++
     dotNetInstaller.exe!CWnd::OnCommand(unsigned int wParam=1000, long lParam=854156)  Line 2364    C++
     dotNetInstaller.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=1000, long lParam=854156, long * pResult=0x0012e828)  Line 1769 + 0x1e bytes    C++
     dotNetInstaller.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=1000, long lParam=854156)  Line 1755 + 0x20 bytes    C++
     dotNetInstaller.exe!AfxCallWndProc(CWnd * pWnd=0x0012f1fc, HWND__ * hWnd=0x002f0624, unsigned int nMsg=273, unsigned int wParam=1000, long lParam=854156)  Line 240 + 0x1c bytes    C++
     dotNetInstaller.exe!AfxWndProc(HWND__ * hWnd=0x002f0624, unsigned int nMsg=273, unsigned int wParam=1000, long lParam=854156)  Line 403    C++

The second, propably more relevant, occurs when the download has finished (whole call stack):

MainThread:
    dotNetInstaller.exe!Component::~Component()  Line 25    C++
     dotNetInstaller.exe!ThreadComponent::~ThreadComponent()  Line 15 + 0x2f bytes    C++
     dotNetInstaller.exe!DownloadComponents::~DownloadComponents()  + 0x51 bytes    C++
     dotNetInstaller.exe!DownloadDialog::~DownloadDialog()  + 0xb1 bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::RunDownloadConfiguration(const shared_any<DownloadGroupConfiguration *,close_delete,null_t,0> & p_Configuration={...})  Line 422 + 0x23 bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::OnComponentExecBegin(const shared_any<Component *,close_delete,null_t,0> & component={...})  Line 486 + 0x19 bytes    C++
     dotNetInstaller.exe!Components::Exec(IExecuteCallback * callback=0x0012f270)  Line 69 + 0x18 bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::OnBnClickedInstall()  Line 243 + 0x30 bytes    C++
     dotNetInstaller.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012f1fc, unsigned int nID=1000, int nCode=0, void (void)* pfn=0x005357fb, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 82    C++
     dotNetInstaller.exe!CCmdTarget::OnCmdMsg(unsigned int nID=1000, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 381 + 0x27 bytes    C++
     dotNetInstaller.exe!CDialog::OnCmdMsg(unsigned int nID=1000, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Line 85 + 0x18 bytes    C++
     dotNetInstaller.exe!CWnd::OnCommand(unsigned int wParam=1000, long lParam=854156)  Line 2364    C++
     dotNetInstaller.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=1000, long lParam=854156, long * pResult=0x0012e828)  Line 1769 + 0x1e bytes    C++
     dotNetInstaller.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=1000, long lParam=854156)  Line 1755 + 0x20 bytes    C++
     dotNetInstaller.exe!AfxCallWndProc(CWnd * pWnd=0x0012f1fc, HWND__ * hWnd=0x002f0624, unsigned int nMsg=273, unsigned int wParam=1000, long lParam=854156)  Line 240 + 0x1c bytes    C++
     dotNetInstaller.exe!AfxWndProc(HWND__ * hWnd=0x002f0624, unsigned int nMsg=273, unsigned int wParam=1000, long lParam=854156)  Line 403    C++
     user32.dll!763bf8d2()     
     [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]    
     user32.dll!763bf794()     
     user32.dll!763bf73d()     
     user32.dll!763c0a05()     
     user32.dll!763c0afa()     
     user32.dll!763e4b0b()     
     user32.dll!763e4c0b()     
     user32.dll!763d47f2()     
     dotNetInstaller.exe!AfxUnlockGlobals(int nLockType=6547617)  Line 109    C++
     0012ea70()    
     user32.dll!763bf8d2()     
     user32.dll!763bf794()     
     user32.dll!763bf73d()     
     user32.dll!763c06f6()     
     user32.dll!763c069c()     
     dotNetInstaller.exe!CWnd::DefWindowProcW(unsigned int nMsg=514, unsigned int wParam=0, long lParam=327715)  Line 1043 + 0x20 bytes    C++
     dotNetInstaller.exe!CWnd::WindowProc(unsigned int message=514, unsigned int wParam=0, long lParam=327715)  Line 1756 + 0x1c bytes    C++
     dotNetInstaller.exe!AfxCallWndProc(CWnd * pWnd=0x0012f4a8, HWND__ * hWnd=0x000d088c, unsigned int nMsg=514, unsigned int wParam=0, long lParam=327715)  Line 240 + 0x1c bytes    C++
     dotNetInstaller.exe!AfxWndProc(HWND__ * hWnd=0x000d088c, unsigned int nMsg=514, unsigned int wParam=0, long lParam=327715)  Line 403    C++
     user32.dll!763bf8d2()     
     user32.dll!763bf794()     
     user32.dll!763bf73d()     
     user32.dll!763c0008()     
     user32.dll!763d08b6()     
     user32.dll!763aaf07()     
     dotNetInstaller.exe!CWnd::IsDialogMessageW(tagMSG * lpMsg=0x00a3d5a8)  Line 198    C++
     dotNetInstaller.exe!CWnd::PreTranslateInput(tagMSG * lpMsg=0x00a3d5a8)  Line 4332    C++
     dotNetInstaller.exe!CDialog::PreTranslateMessage(tagMSG * pMsg=0x00a3d5a8)  Line 80    C++
     dotNetInstaller.exe!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x002f0624, tagMSG * pMsg=0x00a3d5a8)  Line 2946 + 0x14 bytes    C++
     dotNetInstaller.exe!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x00a3d5a8)  Line 233 + 0x12 bytes    C++
     dotNetInstaller.exe!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x00a3d5a8)  Line 777 + 0x9 bytes    C++
     dotNetInstaller.exe!AfxPreTranslateMessage(tagMSG * pMsg=0x00a3d5a8)  Line 252 + 0x11 bytes    C++
     dotNetInstaller.exe!AfxInternalPumpMessage()  Line 178 + 0x18 bytes    C++
     dotNetInstaller.exe!CWinThread::PumpMessage()  Line 900    C++
     dotNetInstaller.exe!AfxPumpMessage()  Line 190 + 0xd bytes    C++
     dotNetInstaller.exe!CWnd::RunModalLoop(unsigned long dwFlags=4)  Line 4386 + 0x5 bytes    C++
     dotNetInstaller.exe!CDialog::DoModal()  Line 584 + 0xc bytes    C++
     dotNetInstaller.exe!CdotNetInstallerDlg::RunInstallConfiguration(DVLib::LcidType lcidtype=LcidUserExe, const shared_any<Configuration *,close_delete,null_t,0> & configuration={...}, bool p_additional_config=false)  Line 59 + 0x12 bytes    C++
     dotNetInstaller.exe!ConfigFileManager::Run()  Line 121 + 0x42 bytes    C++
     dotNetInstaller.exe!CdotNetInstallerApp::InitInstance()  Line 46 + 0xb bytes    C++
     dotNetInstaller.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00a327fe, int nCmdShow=1)  Line 37 + 0xd bytes    C++
     dotNetInstaller.exe!wWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00a327fe, int nCmdShow=1)  Line 30    C++
     dotNetInstaller.exe!__tmainCRTStartup()  Line 263 + 0x2c bytes    C
     dotNetInstaller.exe!wWinMainCRTStartup()  Line 182    C
     kernel32.dll!76ae4911()     
     ntdll.dll!77b9e4b6()     
     ntdll.dll!77b9e489()     
     dotNetInstaller.exe!_AfxCbtFilterHook(int code=1300962676, unsigned int wParam=29459408, long lParam=-942649975)  Line 601 + 0x10 bytes    C++
     c0332675()

And sure, we can do a remote debug session, I will drop you an e-mail.

Regards,
Tom

Jul 24, 2009 at 1:20 AM

Well, there goes my theory... Something trashes memory before the actual AV. The next steps are to suppress the callback then remove the download dialog. I have limited availability tomorrow, but more over the w/e and all day Monday during EST working hours. Send me mail with your timezone and a good time that works for you. -Thx

Jul 24, 2009 at 10:31 AM
Edited Jul 24, 2009 at 11:30 AM

Good to hear, that the stack trace fits in you theory. What do you mean with "AV"?

Another thing concerning the sources. It seems that you have changed something in downloaddialog.h which is not reflected by the current SVN version. Missed you something to commit?
I get the following compile errors for the last SVN versions:

Error    30    error C2660: 'Component::Load' : function does not take 2 arguments    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    28
Error    29    error C2512: 'DownloadComponents' : no appropriate default constructor available    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    26
Error    31    error C2509: 'OnSysCommand' : member function not declared in 'DownloadDialog'    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    55
Error    32    error C2509: 'OnCancel' : member function not declared in 'DownloadDialog'    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    67
Error    33    error C2065: 'm_LastStatusMessage' : undeclared identifier    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    178
Error    34    error C2065: 'm_LastStatusMessage' : undeclared identifier    e:\dev\dotnetinstaller_svn\trunk\dotnetinstaller\downloaddialog.cpp    180

I think we can find some time on the weekend for doing this. More via mail.

Edit: I checked out the repository from scratch and now everything is comiling - strange. So nothing is missing or not reflected :)

Regards,
Tom

Jul 24, 2009 at 12:45 PM

I've seen CodePlex SVN bridge behave this way before - I think it has a bug too. Now that you have the latest sources, for real, I assume you still see the crash?

I was being sarcastic about my theory. Since the change didn't fix the problem, my theory is not valid. AV = access violation.

Jul 24, 2009 at 1:15 PM

Hm, strange behaviour for a source code management system. I never notices sth. like this with pure SVN (or git, etc.) - in some other codeplex projects I had also some update problems with SVN...

However, you are right, in the current version the bug still occurs :(

Jul 25, 2009 at 3:44 AM

Are you available at 3pm EST by any chance tomorrow (Saturday). If yes, what's your e-mail address, I'll send you a webex invite.

Jul 25, 2009 at 4:23 AM

I found another potential problem.  Add a destructor to ThreadComponent, ThreadComponent::~ThreadComponent. In it write this.

if (get(m_pThread) != NULL && m_pThread->m_hThread != NULL)
 {
  CHECK_WIN32_BOOL(WAIT_FAILED != WaitForSingleObject(m_pThread->m_hThread, INFINITE),
   L"WaitForSingleObject");
 }

It would prevent the thread object from being deleted before the thread it's executing terminates (which could maybe explain the crash).

Jul 25, 2009 at 9:43 AM

Great, it seems that this fixed it :)
At least was I not able to reproduce the error with your code.

Thanks,
Tom

Jul 25, 2009 at 10:00 AM

Good. Lets close this thread until the next crash. I've commited this change at rev. 26254 and will make a build now.