[SOLVED]Missing run time on Windows 7



  • Hello,

    I'm trying to deploy my app to a brand new install of Windows 7, but I'm getting the side-by-side configuration error.

    I'm building against the QtSDK.

    I've copied every DLL I think I might need into the same directory as the exe:

    msvcr90d.dll
    msvcr90.dll
    msvcp90.dll
    msvcp90d.dll
    QtCore4.dll
    QtCored4.dll
    QtGui4.dll
    QtGuid4.dll
    QtXml4.dll
    QtXmld4.dll

    Here's part of the sxstrace that seems to show that the exe directory is being probed:

    INFO: Begin assembly probing.
    INFO: Did not find the assembly in WinSxS.
    INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
    INFO: Attempt to probe manifest at Z:\Documents\work\SoftStep\SoftStepQT\qt-12step-deploy-win\Microsoft.VC90.DebugCRT.DLL.
    INFO: Attempt to probe manifest at Z:\Documents\work\SoftStep\SoftStepQT\qt-12step-deploy-win\Microsoft.VC90.DebugCRT.MANIFEST.
    INFO: Attempt to probe manifest at Z:\Documents\work\SoftStep\SoftStepQT\qt-12step-deploy-win\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
    INFO: Attempt to probe manifest at Z:\Documents\work\SoftStep\SoftStepQT\qt-12step-deploy-win\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
    INFO: Did not find manifest for culture Neutral.
    INFO: End assembly probing.

    Any ideas?



  • You should read this articles:
    "Deploying an Application on Windows":http://developer.qt.nokia.com/doc/qt-4.7/deployment-windows.html#id-4dd365a0-4e08-4810-9d5b-5be62a8baaca
    "Redistribution of the shared C runtime component in Visual C++":http://support.microsoft.com/kb/326922
    And probably this:
    "DLL Hell":http://en.wikipedia.org/wiki/DLL_Hell

    Also if you want to deploy only release you don't need Qt*d4.dll. These are debug versions of Qt libraries.



  • Thanks, I'm familiar with the first link. Basically it says I need to include the run time library which I have done.

    I'll check out the second link.

    I'm including debug and release right now just for debugging purposes as I'm still switching between them.



  • [quote author="babazaroni" date="1323954257"]
    I'm including debug and release right now just for debugging purposes as I'm still switching between them.[/quote]

    AFAIK the debug msvcrt* files are not allowed to distribute. (MS license)



  • OK, then I assume the idea is to use a runl-time that's already on the machine. I suspect Vcredist_x86.exe application is involved with this.



  • I just ran vcredist_x86. Still, my app is getting the side-by-side error. More research needed as I don't understand how my app will get matched up with the correct runtime.



  • vcredist installs the release dlls, not the debug ones.
    Which binary type do you run?

    if you have a VC there, you can open the binary with it and read the resources, there is an embedded manifest which tells you which side by side components are needed.



  • OK, I'll switch to release and see what happens.

    I don't want to install Visual C on the target, as I want it top be pristine, just as a customer would start with.



  • If you want a side-by-side installation then note "this":http://connect.microsoft.com/VisualStudio/feedback/details/361682/vc9-sp1-generates-manifests-with-the-wrong-version-number

    I had this problem this week.



  • OK, thanks, switching to release stopped the side-by-side error now. Other problems are apparent, but progress is made.

    I guess I don't want side-by-side install.



  • [quote author="babazaroni" date="1323966444"]I don't want to install Visual C on the target, as I want it top be pristine, just as a customer would start with.[/quote]

    The VC I meant on your dev system. The manifest is integral part of the dll. It states exactly, which MS C runtime will be tried to load what makes it easy to find bugs :-)

    [quote author="babazaroni" date="1323968205"]I guess I don't want side-by-side install.[/quote]

    YOu have side-by-side for MS C runtime, no (simple) way around. You could also just put the MS C runtime in special subdirs of the app, then you don't need to use the vcredist setup, otherwise, the client must call it or it will (evetually) not work. Not all installs of windows will have all redistributables installed.



  • bq. You could also just put the MS C runtime in special subdirs of the app, then you don’t need to use the vcredist setup,

    That's the side-by-side install (msvc). The vc_redist.exe ist the other way. And for the msvc2008 was my note above.



  • [quote author="Gerolf" date="1323954896"]
    AFAIK the debug msvcrt* files are not allowed to distribute. (MS license)[/quote]

    This is true and it is clearly stated in readme file.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.