Home > Blogs > VMware ThinApp Blog

Step by Step Instructions on How to ThinApp Microsoft .NET Framework

These are the step by step instructions on how to package Microsoft .NET Framework.


The following items and knowledge are required for use of this procedure:

  • Familiarization with instructions on how to virtualize a software product via ThinApp (see, "How to Make a ThinApp Application" on http://blog.appvirt.info).


Building a ThinApp package in no way modifies the licensing of the software product you are attempting to virtualize with ThinApp! Ensure you are compliance with product licenses for ANY software package you wish to virtualize and deploy using ThinApp. Consult your software product’s End User License Agreement (EULA) for reference and questions.


These instructions are created with Microsoft .NET Framework 3.5 but translate to all existing versions (1.1 โ€“ 3.5). 

Instructions on How to ThinApp Microsoft .NET Framework

These are the basic instruction you will need on How to ThinApp Microsoft .NET Framework 

  1. Start with a cleanly built Windows XP VM.

    NOTE: Use the "How to make a ThinApp Application" as a reference.

  2. Run a ThinApp Pre-installation Setup Capture.
  3. Close the ThinApp Pre-installation Setup Capture using the red "X" in the upper-right corner.
  4. Execute the Microsoft .NET Framework installer.
  5. If prompted with an End User License Agreement (EULA), then accept it.

    NOTE: EULA’s may be different depending upon the version of Microsoft .NET Framework being installed.
  6. Once the installation of .NET Framework is finished, as .NET Framework 3.5 installation suggests, run Windows Updates to get .NET Framework updates.

  7. Once you’re at the Windows Update, select CUSTOM to be able to select the individual updates for .NET Framework.
    1. Deselect any NON-Microsoft .NET Framework Updates for the version you have just installed.
    2. Select any Microsoft .NET Framework updates and click on Install.
      NOTE: Reboot as necessary.
  8. Open Services.MSC and stop any .NET Framework services.
  9. Run the ThinApp post Setup Capture.
  10. After the post setup capture, open the capture folder and delete the following:
    1. Delete the %Cookies% folder and all subfolders and files.
    2. Delete the %drive_C% folder and all subfolders and files.
    3. Delete the %History% folder and all subfolders and files.
    4. Delete the %Internet Cache% folder and all subfolders and files.
    5. Delete the %Profile% folder and all subfolders and files.
    6. Any subfolder of the %SystemRoot% folder which starts with a "$" sign.
      Example: %SystemRoot%\$NtUninstallWIC$
      NOTE: Don’t delete the %SystemRoot% folder or files, just the folder(s) which start with the $ sign.
    7. Delete the %SystemRoot%\LastGood folder and its subfolders and files.
      NOTE: You may need to reset file/folder attributes and/or delete each item one at a time.
  11. If you would like to copy in any files or configurations, do this now.
    1. Example: Copy in a .NET Version Checker from http://www.tmgdevelopment.co.uk/versioncheck.htm to the %SystemRoot% folder.
      NOTE: To do this, extract VersionCheck.COM and VersionCheck.EXE from the ZIP file downloaded from the above link into the %SystemRoot% folder.
    2. Create an entry point for VersionCheck.EXE in the PACKAGE.INI

      NOTE: Set the appropriate named files to the version of the .NET Framework.

      [VersionCheck for .NET Framework 3.5.exe]
      =Microsoft .NET Framework 3.5.dat

    3. Create additional entry points for testing and troubleshooting.
      Example: Enable IEXPLORE.EXE or CMD.EXE if necessary.
    4. Remove all unnecessary entry points.
  12. Make any other modifications necessary.
  13. Build and deploy the package.
  14. To use this package as an AppLinked package from another, modify the other package’s PACKAGE.INI and create either an OptionAppLinks or RequiredAppLinks entry in the BuildOptions section of the parent application’s PACKAGE.INI.
    NOTE:  See the online help documentation at http://pubs.vmware.com/thinapp4/help/wwhelp/wwhimpl/js/html/wwhelp.htm?href=pkg_app_link_parameters.html#997366 for more information on Application Linking.
This entry was posted in Applications, Tips and tagged on by .
Dean Flaming

About Dean Flaming

Dean is currently an EUC Architect and member of the VMware End User Computing Enablement and Lighthouse Support teams, working to develop communications and IP around VMware End User Computing products and solutions as well as support many various Lighthouse accounts with their own EUC practices. Prior to this, from 2008 through 2012 Dean was one of VMware's End User Computing Specialists. Throughout his time at VMware, Dean has also written and published various articles, videos, and podcasts regarding VMware's EUC Solutions.

20 thoughts on “Step by Step Instructions on How to ThinApp Microsoft .NET Framework

  1. Doug

    The URL http://blog.appvirt.info is dead!
    Any other URL to the Tutorial on “How to Make a ThinApp Application”?

  2. Doug

    After .Net Framework is portable, how we can use Updates?

  3. ignatius

    not work ๐Ÿ™

  4. Dean Flaming

    Come on my good fellow…We need a little more information than just “not work” here.
    I don’t even accept that kind of response from my family members. ๐Ÿ™‚

  5. ignatius

    Firstly, I apologise for having been so lapidary without any explanation.
    However, I followed step by step the guide and while trying with the different entry points I cannot run it. The guide on the other hand does not specify which should be the data container or how else can I activate .NET frameworks.
    sorry for my english

  6. Dean Flaming

    Apologies for the delayed response and if the procedure was not clear.
    Assuming the .NET Framework package is to be a “child” package for another ThinApp Packaged application, then the data container can be named whatever you wish. In my scenario above, I set the data container name to be “Microsoft .NET Framework 3.5.dat” and one of the end points as the version checker software “VersionCheck.EXE”. This way I could copy the “.dat” file into any “plugins” folder and rename it to whatever I wanted after the fact – so long as the parent application’s PACKAGE.INI file had the OptionalAppLinks or RequiredAppLinks setting pointed at that file name.

  7. Phil

    What is the purpose of deleting the various folders?

  8. Dean Flaming

    Remember, ThinApp works on that tried-and-true Delta Snapshot technology (i.e. What changed between times X and Y).
    Deleting the afore mentioned folders is general clean up from getting updates via IE and the mess the installer makes. In this scenario, there are no reasons to package Internet Explorer CACHE, Cookies, or other bloat which IE or the MS Installer’s changes make to the system and then forget to clean up when they exit.
    Since ThinApp captures these changes (as it cannot assume you do or don’t want them), we need to manually remove them after the fact so the extra bloat doesn’t get packaged into the finished ThinApp packaged app.
    Also, the larger the EXE, the slower Windows will launch it. Not to mention, it also takes longer for on-demand AV solutions to scan larger EXE’s as well.

  9. shalini

    I want to use VMware to make my C#.net based application in a portable version. I want to know step by step procedure for that. Could i try this with Trial version of VMware workstation and ThinApp?
    I also want to know about the licensing procedure. Can u please send me the details on my e-mail ID.
    Its an urgent need.
    Thank you..

  10. Dean Flaming

    @shalini The best place to download a demo version is by going to http://www.vmware.com/thinapp and clicking on the “Download Trial” button located in the upper-left side of the page.

  11. VMAppGuy

    Has anyone found working details on how to package dotNet #.5? I have tried multiple times and always get a
    “cannot copy file” for
    ngenrootstorelock.dat and ngenservice_pri1_lock.dat
    if there is a link to the steps could someone drop it in here?

  12. Dean Flaming

    Make sure you stop all services prior to the Post Install Setup Capture. I get these copy errors whenever I forget to stop the services and do the Post Setup Capture with them running.

  13. Joep

    Hi gents,
    the URL about application link is changed into http://pubs.vmware.com/thinapp4/help/wwhelp/wwhimpl/js/html/wwhelp.htm

  14. Dean Flaming

    @Joep – Thanks for correcting the link in the article. Most appreciated.
    @all – As always, blog articles are living docs so make certain to read the comments. ๐Ÿ™‚

  15. Mark

    What is the new link?
    NOTE: See the online help documentation at http://pubs.vmware.com/thinapp4/help/pkg_Application_Link.html for more information

  16. Dean Flaming

    Thanks for pointing this out.
    The new link is:
    As always, these are living documents and it is recommended to review all comments as well on any ThinApp Blog posting.

  17. FukenGruven

    can you post a tutorial for Microsoft Visual C++ ?

  18. netjim66

    Has anyone actually done this successfully? What executable do you use as an entry point? All? None? Some? Sometimes the executables the capture grabs may not be needed. Sometimes the executables don’t have corresponding registry entries. What executables should I include as the entry point? Do I reference THAT executable in the other app, or do I reference the .dat files created? Hmmmmmmmmmmmmmmmmm not much of a step by step.

  19. Dean Flaming

    @netjim66 – You can use whatever executable you wish as an entry point. Since users do not launch “.NET Framework” directly on their own PCs (applications use this), any entry point is fine…most customers usually use the primary/default entry point selected and then create a separate data container file.
    Remember, it can be changed after the fact as well. See the ThinApp Pubs (http://bit.ly/thinapppubs) for more details on how to modify the PACKAGE.INI file after the fact.
    When using AppLink to link another ThinApp package to this .NET Framework ThinApp package, reference the Data Container of this ThinApp package.
    Above assumes the Data Container is a separate file called DOTNET.DAT.
    See the AppLink section of the ThinApp pubs for further information on application linking (http://bit.ly/thinappapplink).
    Also, you may wish to review the ThinApp Bootcamp Series – AppLink Fundamentals as this goes into both the basics and some interesting advanced concepts for using AppLink. This ThinApp Bootcamp may be found here: vmware.com/go/thinappbootcamp

  20. netjim66

    Thanks! That fills in some important peices. I’ve spent considerable time looking on my own, and I always seem to find posts that give basic steps, but lack the information you provided.

Comments are closed.