Home > Blogs > VMware ThinApp Blog


How to Make a ThinApp Application Package

Here are the prerequisite instructions on how to make a ThinApp application. They will cover the basics for creating the package and are "as is" and contain nothing in relation to capturing any specific package. This is so you have an overview of what basic items and steps are needed in order to properly create and build ThinApp packages.

Requirements

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

  • A legal, licensed copy of VMware Workstation (or VMware Server, VMware ESX, or any other 3rd party OS virtualization platform). See NOTE 1 in this article.
    • This must already be installed and configured.
  • A legal, licensed copy of Microsoft Windows XP Pro.
  • A virtual machine (VM) with Windows XP Pro installed (See NOTE 2).
  • Knowledge of how to load a Windows Operating System (i.e. Windows XP Pro).
  • Knowledge of how to properly use VMware Workstation (or your OS Virtualization platform of choice).
  • A legal, licensed copy of VMware ThinApp installed either on the VM or on the VMware Workstation host (See NOTE 3).
  • A legal, licensed copy of the application you are going to install.
  • Knowledge of how to install and configure the application you are going to capture and build with VMware ThinApp.

Notes and Warnings:

  1. A single VMware Workstation license is currently part of the ThinApp purchase. This "How To" guide will reference VMware workstation as it is sold with ThinApp 4.0.
  2. It is recommended to build the Windows XP Pro system to the lowest common settings. If at all possible, do not install anything that is not absolutely necessary to bring the VM up and running smoothly.
    1. If using VMware Workstation, VMware Server, VMware ESX, or some third party operating system virtualization product that uses VM Guest/Client Tools, it is recommended to install these tools in order for proper operation and utilization of the virtualization environment. This includes VMware Tools.
    2. Virtual Machine Hardware settings will vary depending upon the software to be captured and virtualized by ThinApp. 
      1. Virtual Network Adapters should be assigned to NAT or private networks if possible UNLESS the application being installed needs to talk to the production network. 
    3. When installing Windows XP Pro, install all of the Windows Security Updates from Windows Updates or Microsoft Updates, but make certain to NOT install any other items such as Internet Explorer 7 (IE7) as these are not needed. 
  3. If ThinApp is installed on the host then the ThinApp folder must be shared out. It is preferred to share out the ThinApp folder with READ/WRITE GUEST access in order to keep the items installed to the Windows XP Pro VM to an absolute minimum.
    WARNING: You must take all responsible and possible actions to ensure this is not a security risk!
  4. Building a ThinApp package in no way modifies the licensing of the software product you are attempting to virtualize with ThinApp! Ensure you are in 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. 

Instructions on How to Make a ThinApp Application

These are the basic instruction you will need to capture a ThinApp and make create a packaged application.

  1. Install VMware Workstation
  2. Build a Virtual Machine (VM) with the following Virtual Hardware Settings:
    1. Virtual Hard Drive – At least 8GB up to 20GB in size. Not too large as you will need to snapshot the system back to a "clean state" prior to reusing it.
    2. Virtual Memory – At least 256MB up to 512MB in size. You may go larger if necessary but VMs with larger amounts of RAM assigned tend to operate somewhat sluggishly.
    3. Virtual Network/Ethernet Adapter – Set this to NAT if possible. If using a third party operating system virtualization solution, create a private network away from your production network (See NOTE 2.b.i).
    4. Virtual Processor – Use only one virtual processor unless there is some specific for multiple processors.

  3. Load Windows XP Pro on the Virtual Machine.
    1. It is suggested to install and configure Windows XP Pro to the lowest common settings within your environment.
    2. Suggestions for additional Windows XP Pro load and configuration settings:
      1. DO NOT INSTALL…
        1. Windows XP Pro Service Pack 3 (XP SP3). This is because XP SP3 (more or less) requires the installation of Internet Explorer 7 (IE7) as XP SP3 prevents the uninstall of IE7.
        2. Internet Explorer 7 (IE7)
        3. Any .NET Framework
        4. Any Java Runtime Edition (JRE)
        5. Any Java Developer Kit (JDK)
        6. Any Windows Media Player
        7. Any Windows Messenger
        8. Any network or otherwise unnecessary services.
      2. INSTALL…
        1. All Windows Security Updates from Windows Updates / Microsoft Updates. Just makes certain you do not install any non-security updates (See NOTE 2.c.)
        2. Windows Installer 3.1. This will most likely be needed by one of your application installations and we do not want to capture this installation process if the application automatically installs Windows Installer 3.1 during its own install.
      3. Install if necessary…
        1. Virtual Machine Client/Guest tools.
        2. Microsoft Base Smart Card package and updates.
        3. Windows Genuine Advantage Validation tool.
        4. Any additional updates you wish to have built into your baseline image.

      NOTE: Example of installed items (without showing updates).


  4. Create a Snapshot/Backup of your VM.
    1. Once you have a baseline image completed you need to snapshot that in order to ensure that you have a clean build to jump back to each and every time you wish to install a new application.
      1. To do this, shutdown your VM and create a snapshot or backup of it. In VMware Workstation, this is done via the Snapshot Manager.

  5. Install ThinApp.
    1. If you want to install ThinApp on the VM, go ahead and install and mount up the installation point within the VM and run through the install wizard. Just use the defaults.
    2. If you want to install ThinApp on your own workstation and share it out, do the following.
      1. Install ThinApp by running through its install wizard and selecting the defaults.
      2. The default installation folder is "%PROGRAMFILES%\VMware\VMware ThinApp\". Share this folder out with Anonymous/Guest Read/Write privileges.
        1. Right-click on the above folder and select SHARING AND SECURITY.
        2. Select SHARE THIS FOLDER
        3. Type in ThinApp$ for the share name (the $ will hide the share).
  1. Open PERMISSIONS by clicking on the Permissions button and give EVERYONE Full Control. You may also wish to add ADMINISTRATORS and SYSTEM and give them full control as well. Click OK on the permissions window when done with the SHARE Permissions.

  2. Click on the SECURITY tab and add ANONYMOUS LOGON and GUESTS groups to the permissions window.

  3. Ensure ALL groups have FULL CONTROL – Including ANONYMOUS LOGON, GUESTS, USERS, and ADMINISTRATORS. Click OK when done.
  4. Open your Local Machine Security Policy by going to Administrative Tools and clicking on Local Security Policy.
  5. In your Local Security Policy, browse to SECURITY OPTIONS under LOCAL POLICIES and look for NETWORK ACCESS: SHARES THAT CAN BE ACCESSED ANONYMOUSLY.

  6. Edit the NETWORK ACCESS: SHARES THAT CAN BE ACCESSED ANONYMOUSLY policy and add the THINAPP$ share.

  7. Click OK when done. Your local ThinApp$ share can now be accessed from a Virtual Machine by use of a UNC path or mapped network drive.
    NOTE: You will likely have to reboot for this to take effect.
  8. You should start up your VM and test access to the UNC path. The UNC path will likely be similar to \\192.168.XXX.2\ThinApp$ where "XXX" is the third octet on the virtual network.
    NOTE: It is suggested to add this UNC to the system path so you can run BUILD.BAT without modifications.
  1. Build your ThinApp package.
    1. If you installed ThinApp on your VM, you should take another Snapshot of your VM to ensure you do not have to install ThinApp every time after using it to build a ThinApp package.
      1. To do this, shutdown your VM and create a snapshot or backup of it. In VMware Workstation, this is done via the Snapshot Manager.

    2. Start your VM.

    3. Run the SETUP CAPTURE program to gather a pre-scan of the system.

    4. Once this is finished, either minimize or close Setup Capture (using red "X" in upper right-hand corner of window).
      DO NOT CLICK NEXT OR CANCEL!

      DO NOT CLICK NEXT OR CANCEL!
    5. Install your application.
      1. At this point, you can install your application or applications.

        If you wish to make one big package of the application and all of its prerequisites, then install the prerequisites and the application all at once.

        If you wish to make packages for any/all prerequisites (such as Java versions, .NET Framework versions, MSDE versions, Crystal versions, etc.), then treat each of the prerequisite installs as a separately packaged application. In other words, install a prerequisite as if it were its own package.

        If you install each/any of the prerequisites as their own packages, it should be noted that PRIOR to conducting the pre-installation Setup Scan and installing the actual application, the prerequisites will need to be installed so that they DO NOT get included in the recorded changes for the installation of the application in question.

        Example: You are attempting to capture an application called REALLY BIG APP. REALLY BIG APP’s prerequisites are Sun’s JRE 1.6 and Microsoft’s .NET Framework 3.0. If you want to have each of these as separate captured packages, you need to do the following:

        1. On a clean VM, capture the installation of Sun’s JRE 1.6 (do not install anything else for this capture).
        2. On a clean VM, capture the installation of Microsoft’s .NET Framework 3.0 (do not install anything else for this capture).
        3. On a clean VM, INSTALL Sun’s JRE 1.6 AND Microsoft’s .NET Framework 3.0.
        4. Run the ThinApp prescan process.
        5. Install REALLY BIG APP.
        6. Run the ThinApp postscan process (detailed later on in this process).
    6. Install any and all updates necessary for your application. Remember, it is ok to reboot as many times as necessary.
      NOTE: You may need to cancel out of the post installation scan upon login after a reboot.
    7. Once your application installation is complete, LAUNCH your application and test it out from the VM.
      1. It may be necessary to answer any questions asked by the application, such as…
        1. Activations/Licensing
        2. File Associations
        3. Default Settings
        4. Etc.

        NOTE: You may need to close and re-open your application multiple times to get prompted by your application.

      2. Your application should run exactly as you desire it to.
    8. Once you are done answering questions, run the ThinApp post installation scan.
      1. If you did not close the Setup Capture window, then you can NOW click NEXT to continue.
      2. If you closed the Setup Capture window, re-launch Setup Capture, select CONTINUE INSTALLATION PROCESS and click NEXT.

      3. Click NEXT again to run the post scan process.
      4. After the post installation scan is complete, you will be asked to select entry points for your application, assign a data container and set an Inventory name.
        1. Select the appropriate entry point or entry points.
        2. You can also select a primary data container – remember that large installations will need to use DAT files as a data container.
        3. Set your Inventory Name.

        Click NEXT when ready.

      5. The next screen will allow you to select which Active Directory User Groups you wish to assign permission to use this packaged application, including an Access Denied message, and where you would like the Sandbox location to be by default.
        NOTE: To use Active Directory groups, the VM which you are running this process on must be part of the domain to read in the A.D. Group SIDs.
        1. Click ADD to add in any groups desired.
          1. Set your Access Denied message if using groups.
        2. Select the default sandbox location

        Click NEXT when ready.

      6. Now you need to select the default Isolation Mode for the packaged application. Typically, most applications will be using MERGED for an isolation mode.

      7. You should now be asked to define a Project Location, whether you wish to build an MSI file (including the name of the MSI file), and what level of compression to use on the package.

        Typically, for testing, no compression is used. However, for finalized packages it may be desired to compress them depending upon their size.

        NOTE: Typical compression ratios are roughly 2:1 but can sometimes be as much as 3:1 depending upon the files in the package.

        Click NEXT when ready.

      8. At this point, your package will be created based upon the differences between the pre-installation scan and post-installation scan.
      9. Finally, you will be presented with an option to build your project. This essentially runs the BUILD.BAT file.

        You can select BROWSE PROJECT, BUILD NOW, or FINISH.
        1. If you select BROWSE PROJECT, you will be presented with a Windows Explorer window showing your project files. From there, if you wish, you can also run BUILD.BAT.
        2. If you select BUILD NOW, your project will be packaged into an executable or executables (depending upon the number of entry points selected).
        3. If you select FINISH, the Setup Capture window will be closed.

        Click FINISH when done.

    9. You have finished building a ThinApp package.
  2. You can now test your application.
    1. Try running the package application from the VM as well as another system which does not have the application installed.
    2. If you have any issues with the packaged application, see if those issues exist within the application installed on the VM.
  3. Return the VM to a clean build once testing is completed.
    1. If you ran ThinApp and dumped the package to the local C: drive of the VM, then it is generally good practice to copy off the ENTIRE package to another source so you can work with it separately. This way you can reset this VM back to a clean build.
    2. Once you have copied off the entire package to a safe location, power down the VM and restore the VM back to a clean build by going into the VMware Workstation Snapshot manager and clicking on the GO TO button.

      This will revert you to the clean build snapshot taken prior to installing the application.
  4. You’re ThinApp packaging is now complete.
This entry was posted in FAQs, Tips and tagged on by .
Dean Flaming

About Dean Flaming

Dean is currently a member of the VMware End User Computing Enablement and Lighthouse Support team working to develop communications 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.

16 thoughts on “How to Make a ThinApp Application Package

  1. TheMida

    i think its easier install Windows VMWare Tools and Windows updates,… and than to set the virtual harddisk to nonpersistent and not

  2. prassna

    On running vmware-thinapp post scan, lookup #7 & 8 : if the application requires the PC to be restarted then how to proceed?

  3. joel

    I have a little proposal to this blog, Ive also mailed Peter B, but i dont have the correct mailaddress left.
    How about blogging about som real-life examples where some of the more advanced parameters in package.ini gets used? VirtualizeOutOfProccessCom, ChildProcessEnvironmentException, ExternalDlls and so on. I’m a ThinApp customer and got a basic knowledge about software development at a more abstract level, so instead of trial-and-error the various parameters it would be neat to have some applications that you blog about to refer/compare to

  4. Fabian

    Same question as to the restart of the system. Is it to be done or not? So meaning mandatory if asked for reboot and does the capture-progress proceed afterwards?
    Regards,
    Fabian

  5. Dean Flaming

    @Prassna – Thanks for the suggestion! These are things we are definitely working on/around.
    @Joel – Reboot as many times as you need. ThinApp will automatically pop-up after reboot and login of the same admin account. If you are not done installing/configuring/testing your app, just minimize or click the “X” in the upper right corner to close and continue your app install/configure/testing.
    Once done installing/testing/configuring your app, just remember after any reboot, if your app installed services, remember to stop them (including any system tray icons, tools, helper apps, etc.) before continuing with the post-install Setup Capture.
    BTW…A cool little tip here is to do a VM Snapshot just prior to launching the ThinApp post-installation Setup Capture. This way, you never have to do a install/recapture! Kinda cool!

  6. pcruces

    It´s needed to capture de app on the same OS on this will be running later? For example capture an app on WinXP and later run the package on a W2k? Thanks.

  7. pcruces

    Hi. I just made a capture and pute the project root on a shared folder like “\\xp-host\soft\….” But if i try to move the executables thinapped to another server o another site, when i clcik on execute it fails because it don´t find the locally root were i put the project…..
    It´s possible to move the thinapp aout the initial installation? My idea is create some thinapp in order to use in different sites.
    Thanks

  8. Dean Flaming

    @pcruces – It sounds as if you didn’t move the data container along with the executables. A ThinApp entry point (EXE) is nothing more than an executable shortcut into the ThinApp package (DAT-or otherwise named data container file).
    All ThinApp Entry Point EXEs must reside in the same folder as their respective Data Container (DAT) file. These can reside anywhere you’d like them to be – regardless of where you store the ThinApp project.
    As a test, enable the MSI option and utilize that to deploy the app to another system. When the shortcuts appear, go to their source and see the EXEs and DAT residing in one folder.

  9. VMSysProg

    Dean,
    Thanks for the timely review.
    During this procedure, when should the CommandLine= entry be setup to have the application take command line arguments from the environment or Entry definition.
    Is the CommandLine= or any other part of the setup (WorkingDirectory, FileTypes, CommandLine, etc) done after the packaging step as a pre-cursor to deployment (moving executable and data container to where people will have access)?
    I’m thinking of bundling a browser that can start with a specific URL depending which external web page someone hits.
    Presently, I inherited project where we have 6 browser packages that have the browser’s home page set to the target. I want to have one package and just control the environment during the startup phase of ThinApp after the download.
    Note: we have 6 packages with hardwired URL in home page; and 3 types of each URL’s package for Windows XP, Windows Vista and Windows 7.
    Thanks

  10. Dean Flaming

    Typically, ThinApp will put the CommandLine= value under the entry point when it see’s a Windows shortcut which has a command line switch in it. Additionally, the same goes for the WorkingDirectory value – which is added when the shortcut created has a path specified in the “Start In” box of the shortcut.
    If needed/desired, you can add the above two values (CommandLine and WorkingDirectory) to any entry point after the fact by adding in the values to the PACKAGE.INI file.
    If you are manually creating CommandLine, just copy the entry point’s “Source=” line and paste right below it – then change out the word “Source” to “CommandLine” and add in your switches and other command line options.
    I know some have complained about Lijit not being the best search engine, but you should be able to search the ThinApp Blogs for “CommandLine” and get a number of returned articles on how it is used. Additionally, the URL at the top of your PACKAGE.INI can be used for assistance (it is a link to the latest online documentation for your version of ThinApp) and by the button in the upper left corner, you can search the ThinApp documentation for assistance on any PACKAGE.INI value (such as “CommandLine”).
    Your wanting to fire up a browser to a specific web page is totally doable – I do it quite often in my Java packages when launching IE to a specific test site. :-)
    [IExplore with JRE 1.5.0.exe]
    Disabled=0
    Shortcut=JAVA.DAT
    Source=%ProgramFilesDir%\Internet Explorer\iexplore.exe
    CommandLine=”%ProgramFilesDir%\Internet Explorer\iexplore.exe” “http://www.javatester.org/version.html”

  11. Dean Flaming

    Also, instead of using a CommandLine, you can pass a command line argument directly to the entry point EXE as well – which, in turn, passes the command line argument to the program which the entry point executes.

  12. ravi

    does thinapp dependency needs to be sequenced with main app or can use the raw dependency source and sequenced Main app? please suggest

  13. Dean Flaming

    @Ravi – Either way will work (packaging the subcomponent with the app or separately and using AppLink settings such as OptionalApplink or RequiredApplink).

  14. JLogan3o13

    I have a question, which may or may not fall in the scope of this post. I am working through my first couple of applications, trying to decide if ThinApp will be a fit for my company. I have a development team, and am curious if there is any mechanism, should we build an application and decide to ThinApp it, to then distribute to our customers. Will we be forced to purchase a license for each of these customers?

  15. Dean Flaming

    Unfortunately, what you are asking is not allowed within the ThinApp Enterprise EULA. From my understanding the only way this could be accomplished with the Enterprise version of ThinApp is if each of your customers bought their own copy of ThinApp and the proper number of client licenses they needed. You could then package the customer’s application with their ThinApp license.
    The other way is VMware has a Developer Edition of ThinApp (a.k.a ISV version of ThinApp) which allows for redistribution of ThinApp packages assuming the redistribution requirements of the packaged app has been addressed (assuming you own the app being packaged, are selling the application being packaged to the customer, or the customer already owns the app being packaged).
    I would highly recommend you contact your VMware representative for clarification so we can thoroughly review your needs and help you address the requirements.

Comments are closed.