Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Everything you wanted to know about VC++ deployment but were afraid to ask

Download

Right click “Save as…”

After C++ code has been written, compiled and tested it's now time for figuring out how to deploy it successfully on n number of users' machines and their various configurations... This is no easy task given the number of potential versioning conflicts. Of course, there are ways to do this, many of them automatic in nature, but which way is the best way? How do the various methodologies of delploying exes and dlls on machines stack up? How does it all work? Deployment is one of those things that many of us take for granted, but George Mileka and Ben Anderson of the Visual C++ team spend much of their time thinking about the process of deploying code to any number of machines so we don't have to. Tune in and learn about the nitty gritty of VC deployment. There is plenty of whiteboarding in this one so be sure to put your propeller caps on.

Tags:

Follow the Discussion

  • Athanathan C/C++ and a cup of coffee...
    Interesting but overcomplicated guidelines that nobody knows, reads or follows.
    Thanks anyway Smiley
  • CharlesCharles Welcome Change
    sakisp wrote:
    Interesting but overcomplicated guidelines that nobody knows, reads or follows.
    Thanks anyway


    Interesting point of view. I don't agree, however. Follow these guidelines! They will save you from much grief... Smiley
    C
  • Athanathan C/C++ and a cup of coffee...
    Charles wrote:
    Interesting point of view. I don't agree, however. Follow these guidelines! They will save you from much grief...


    I do that Charles whenever is possible, but I was not talking about me.
    Most of the software industry "big-names" (not to mention 99% of shareware vendors), ignore these guidelines when designing their products deployment.
  • graboygraboy graboy
    Sorry but you've managed to make the process of distributing .dlls harder and less reliable than it ever has been.

    (SXS will likely join the registry and UAC in the legendary "it sounded good on paper" pile.)
  • odujoshodujosh Need Microsoft SUX now!
    sakisp wrote:
    
    Charles wrote:
    Interesting point of view. I don't agree, however. Follow these guidelines! They will save you from much grief...


    I do that Charles whenever is possible, but I was not talking about me.
    Most of the software industry "big-names" (not to mention 99% of shareware vendors), ignore these guidelines when designing their products deployment.


    Wow you must be a busy guy working with so many companies to make such generalizations. So do you hop companies every week. Or are you making something up to have a point. I vote for the latter.
  • Just out of curiosity, what approach deos Mac OS X uses (I know they don't have dlls, but they still heave lilbraries, etc.)?

    Do they link everything in the binaries? How are updates taken care of in that case?
  • FluffyDevilBunnyFluffyDevil​Bunny GO GO GADGET COMPILER!
    MacOS does use dlls or sos. It gives the appearance that they don't exist because the application you are clicking on is actually a directory with an extension of .app. Everything the application depends on is in the directory so when you drag it around places, everything goes with it. As for shared dlls, they are stored in the library directory. The application contains a manifest that tells it which libraries it relies on. Its all very simple.
  • DouglasHDouglasH Just Causual
    FluffyDevilBunny wrote:
    MacOS does use dlls or sos. It gives the appearance that they don't exist because the application you are clicking on is actually a directory with an extension of .app. Everything the application depends on is in the directory so when you drag it around places, everything goes with it. As for shared dlls, they are stored in the library directory. The application contains a manifest that tells it which libraries it relies on. Its all very simple.


    so in theory MacOS can still suffer from dll hell unless the library directory stores multiple versions of the Library. 

    Douglash
  • FluffyDevilBunny wrote:
    MacOS does use dlls or sos. It gives the appearance that they don't exist because the application you are clicking on is actually a directory with an extension of .app. Everything the application depends on is in the directory so when you drag it around places, everything goes with it. As for shared dlls, they are stored in the library directory. The application contains a manifest that tells it which libraries it relies on. Its all very simple.


    Well, it does not look substantially different from Windows...
  • Athanathan C/C++ and a cup of coffee...
    odujosh wrote:
    Wow you must be a busy guy working with so many companies to make such generalizations. So do you hop companies every week. Or are you making something up to have a point. I vote for the latter.


    No, I'm not a "busy guy working with many companies". I'm just a regular tech guy who has deployed hundreds of commercial applications during my life.  Do you think it's too difficult to recognize a messed up installation?

  • Joshua RossJoshRoss Niner since 2004
    When the Office Ribbon updates comes, being off band, will there be another VC redist? And why is producing ClickOnce deployments so complicated for native C++ apps? It's not like disk space is an issue... Is disk space an issue?
  • These silverlight players are killing me. Everytime I load channel9 my entire ie locks, even other tabs for near 30 seconds just to load that picture. Its really an unacceptable freeze. Can't you guys load the page and then load the player in an AJAX panel so I can continue other tasks?

    sry, its been getting on my nerves since channel9 switched players. I appreciate your efforts.
  • Joshua RossJoshRoss Niner since 2004
    @Dark_Halmut

    Are you running the lastest Version: 1.0.21115.0?
  • cheongcheong Recent Cheevo unlocked: You got cookied!
    DouglasH wrote:
    
    FluffyDevilBunny wrote:
    MacOS does use dlls or sos. It gives the appearance that they don't exist because the application you are clicking on is actually a directory with an extension of .app. Everything the application depends on is in the directory so when you drag it around places, everything goes with it. As for shared dlls, they are stored in the library directory. The application contains a manifest that tells it which libraries it relies on. Its all very simple.


    so in theory MacOS can still suffer from dll hell unless the library directory stores multiple versions of the Library. 

    Douglash

    Linux systems (I believe it's also in most *nix systems) store the dynamic link libraries in /lib and /usr/lib. with .so(dynamic-linked) or .a(static-linked) in extension.

    And they put the version number at the end of the file. Then provide symbolic link to the filename without version in extension as the current version.

    ======

    So you'll see:

    libsomething.so -> libsomething.so.4.3.3
    libsomething.so.3 -> libsomething.so.3.1.0
    libsomething.so.4 -> libsomething.so.4.3.3
    libsomething.so.3.1.0
    libsomething.so.4.3.1
    libsomething.so.4.3.3

    In some system that doesn't use package management systems.

    ======

    Note that on most systems, some of these libraries are left behind intensionally for backward compatibility reasons. (e.g.: the *-compat packages)

    If you install an application that requires previous version of glibc runtime, just install the current version of glibc-compat and you'll get all the previous versions of glibc-runtime. That's how they solve the DLL hell problem.


  • Christian Liensbergerlittleguru <3 Seattle
    offtopic follows:

    Dark_Halmut wrote:
    These silverlight players are killing me. Everytime I load channel9 my entire ie locks, even other tabs for near 30 seconds just to load that picture. Its really an unacceptable freeze. Can't you guys load the page and then load the player in an AJAX panel so I can continue other tasks?

    sry, its been getting on my nerves since channel9 switched players. I appreciate your efforts.


    You can op out... Go to your profile -> settings and disable silverlight for the player.
  • Thanks, littleguru. I assumed we were being forced to use a technology.
  • Josh - when we ship QFEs and SPs, we update all redist mechanisms, including app-local DLLs, MSMs and VCRedist*.exe as part of the patch to Visual Studio.  I believe we will do the same for the MFC update (although, since it is in the future, I can't say with exact certainty that it will be that way, but that's the current plan as far as I know).

    -Ben
  • glebdglebd Turning coffee into code
    Another sad example of how Microsoft manages to overcomplicate things. This is DLL hell, reloaded.
  • hire Ludvig Strigeus.
  • Please explain how can this become DLL hell - reloaded?

    TA.

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.