Escolar Documentos
Profissional Documentos
Cultura Documentos
ThinApp 4.6.1
This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent editions of this document, see http://www.vmware.com/support/pubs.
EN-000400-01
You can find the most up-to-date technical documentation on the VMware Web site at: http://www.vmware.com/support/ The VMware Web site also provides the latest product updates. If you have comments about this documentation, submit your feedback to: docfeedback@vmware.com
Copyright 2011 VMware, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. VMware products are covered by one or more patents listed at http://www.vmware.com/go/patents. VMware is a registered trademark or trademark of VMware, Inc. in the United States and/or other jurisdictions. All other marks and names mentioned herein may be trademarks of their respective companies.
VMware, Inc.
Contents
AboutThisBook
1 InstallingThinApp 11
ThinAppRequirements 11 OperatingSystems,Applications,andSystemsThatThinAppSupports 11 ApplicationsThatThinAppCannotVirtualize 12 RecommendationsforInstallingThinApp 12 UsingaCleanComputer 12 UsingtheEarliestOperatingSystemRequiredforUsers 13 InstallThinAppSoftware 13 CheckingThinAppInstallationFiles 13
2 CapturingApplications 15
PhasesoftheCaptureProcess 15 PreparingtoCaptureApplications 15 CapturingApplicationswiththeSetupCaptureWizard 16 CreateaSystemImageBeforetheApplicationInstallation 16 RescantheSystemwiththeInstalledApplication 16 DefiningEntryPointsasShortcutsintotheVirtualEnvironment 17 SetEntryPoints 17 SetUserGroups 18 DefiningIsolationModesforthePhysicalFileSystem 18 SetFileSystemIsolationModes 20 StoringApplicationChangesintheSandbox 20 CustomizetheSandboxLocation 20 SendAnonymousStatisticstoVMware 20 CustomizeThinAppProjectSettings 21 DefiningPackageSettings 21 CustomizePackageSettings 22 OpeningProjectandParameterFiles 22 BuildVirtualApplications 23 AdvancedPackageConfiguration 23 ModifyingSettingsinthePackage.iniFile 23 ModifyingSettingsinthe##Attributes.iniFile 24 GuidelinesforPackagingMicrosoftOffice2007 24 RequirementsforPackagingMicrosoftOffice2007 25 CapturingMicrosoftOffice2007 25 ConfigureMicrosoftOffice2007 27 CapturingInternetExplorer6onWindowsXP 28 RequirementsforCapturingInternetExplorer6onWindowsXP 28 CaptureInternetExplorer6onWindowsXPbyUsingtheSetupCaptureWizard 28 CaptureInternetExplorer6onWindowsXPFromtheCommandLine 29 ExtractingandRegisteringThinDirect 30 CapturingMultipleApplicationInstallerswithThinAppConverter 30 ThinAppConverterConversionProcess 30 SystemRequirementsforRunningThinAppConverter 32 PreparingtheConfigurationFileforThinAppConverter 32 PredefinedEnvironmentVariables 38
VMware, Inc.
3 DeployingApplications 39
ThinAppDeploymentOptions 39 DeployingThinAppwithDeploymentTools 39 DeployingThinAppintheVMwareViewEnvironment 39 DeployingThinApponNetworkShares 40 DeployingThinAppUsingExecutableFiles 40 EstablishingFileTypeAssociationswiththethinreg.exeUtility 40 ApplicationSyncEffectonthethinreg.exeUtility 40 Runthethinreg.exeUtility 41 Optionalthinreg.exeParameters 41 BuildinganMSIDatabase 43 CustomizingMSIFileswithPackage.iniParameters 43 ModifythePackage.iniFiletoCreateMSIFiles 43 ControllingApplicationAccesswithActiveDirectory 45 Package.iniEntriesforActiveDirectoryAccessControl 45 StartingandStoppingVirtualServices 46 AutomaticStartupforVirtualServices 46 UsingThinAppPackagesStreamedfromtheNetwork 47 HowThinAppApplicationStreamingWorks 47 RequirementsandRecommendationsforStreamingPackages 48 StreamThinAppPackagesfromtheNetwork 49 UsingCapturedApplicationswithOtherSystemComponents 49 PerformingPasteOperations 49 AccessingPrinters 49 AccessingDrivers 49 AccessingtheLocalDisk,theRemovableDisk,andNetworkShares 49 AccessingtheSystemRegistry 50 AccessingNetworkingandSockets 50 UsingSharedMemoryandNamedPipes 50 UsingCOM,DCOM,andOutofProcessCOMComponents 50 StartingServices 50 UsingFileTypeAssociations 50 SampleIsolationModeConfigurationDependingonDeploymentContext 51 ViewofIsolationModeEffectontheWindowsRegistry 51
4 UpdatingandLinkingApplications 53
ApplicationUpdatesThattheEndUserTriggers 53 ApplicationSyncUpdates 53 ApplicationLinkUpdates 56 ApplicationUpdatesThattheAdministratorTriggers 60 ForcinganApplicationSyncUpdateonClientMachines 61 UpdatingApplicationswithRuntimeChanges 61 AutomaticApplicationUpdates 62 DynamicUpdatesWithoutAdministratorRights 63 SidebySideUpgradingofRunningApplicationsonaNetworkShare FileLocks 63 UpgradeaRunningApplication 63 SandboxConsiderationsforUpgradedApplications 64 UpdatingtheThinAppVersionofPackages 64 relinkExamples 64
63
VMware, Inc.
Contents
5 ConfiguringPackageParameters 65
Package.iniFileStructure 66 ParametersThatApplytoPackage.inior##Attributes.iniFiles ConfiguringtheThinAppRuntime 66 NetRelaunch 66 RuntimeEULA 67 VirtualComputerName 67 Wow64 68 QualityReportingEnabled 68 LoadDotNetFromSystem 68 ConfiguringIsolation 68 DirectoryIsolationMode 68 RegistryIsolationMode 69 ConfiguringFileandProtocolAssociations 70 FileTypes 70 Protocols 70 ConfiguringBuildOutput 71 ExcludePattern 71 Icon 71 OutDir 72 RetainAllIcons 72 ConfiguringPermissions 72 AccessDeniedMsg 72 AddPageExecutePermission 72 PermittedGroups 73 UACRequestedPrivilegesLevel 74 UACRequestedPrivilegesUIAccess 74 ConfiguringObjectsandDLLFiles 74 ExternalCOMObjects 74 ExternalDLLs 75 ForcedVirtualLoadPaths 75 IsolatedMemoryObjects 76 IsolatedSynchronizationObjects 76 NotificationDLLs 77 NotificationDLLSignature 77 ObjectTypes 77 SandboxCOMObjects 78 VirtualizeExternalOutOfProcessCOM 78 ConfiguringFileStorage 78 CachePath 78 UpgradePath 79 VirtualDrives 80 ConfiguringProcessesandServices 81 AllowExternalKernelModeServices 81 AllowExternalProcessModifications 81 AllowUnsupportedExternalChildProcesses 82 AutoShutdownServices 82 AutoStartServices 82 ChildProcessEnvironmentDefault 83 ChildProcessEnvironmentExceptions 83 ConfiguringSizes 83 BlockSize 83 CompressionType 84 MSICompressionType 85 OptimizeFor 85 66
VMware, Inc.
ConfiguringLogging 86 DisableTracing 86 LogPath 86 ConfiguringVersions 86 CapturedUsingVersion 86 StripVersionInfo 86 Version.XXXX 87 ConfiguringLocales 87 AnsiCodePage 87 LocaleIdentifier 87 LocaleName 88 ConfiguringIndividualApplications 88 CommandLine 88 Disabled 88 ReadOnlyData 89 ReserveExtraAddressSpace 89 Shortcut 89 Shortcuts 90 Source 90 WorkingDirectory 91 ConfiguringDependentApplicationswithApplicationLink 91 ApplicationLinkPathnameFormats 91 RequiredAppLinks 92 OptionalAppLinks 93 ConfiguringApplicationUpdateswithApplicationSync 93 AppSyncClearSandboxOnUpdate 94 AppSyncExpireMessage 94 AppSyncExpirePeriod 94 AppSyncURL 94 AppSyncUpdateFrequency 95 AppSyncUpdatedMessage 95 AppSyncWarningFrequency 95 AppSyncWarningMessage 95 AppSyncWarningPeriod 96 ConfiguringMSIFiles 96 MSIArpProductIcon 96 MSIDefaultInstallAllUsers 96 MSIFilename 97 MSIInstallDirectory 97 MSIManufacturer 98 MSIProductCode 98 MSIProductVersion 98 MSIRequireElevatedPrivileges 99 MSIUpgradeCode 99 MSIStreaming 100 ConfiguringSandboxStorageandInventoryNames 100 InventoryName 100 RemoveSandboxOnExit 101 SandboxName 101 SandboxNetworkDrives 101 SandboxPath 102 SandboxRemovableDisk 102
VMware, Inc.
Contents
6 LocatingtheThinAppSandbox 103
SearchOrderfortheSandbox 103 ControllingtheSandboxLocation 105 StoretheSandboxontheNetwork 105 StoretheSandboxonaPortableDevice 105 SandboxStructure 106 MakingChangestotheSandbox 106 ListingVirtualRegistryContentswithvregtool 106
7 CreatingThinAppSnapshotsandProjectsfromtheCommandLine 107
MethodsofUsingthesnapshot.exeUtility 107 CreatingSnapshotsofMachineStates 107 CreatingtheTemplatePackage.inifilefromTwoSnapshotFiles 108 CreatingtheThinAppProjectfromtheTemplatePackage.iniFile 108 DisplayingtheContentsofaSnapshotFile 109 Samplesnapshot.exeCommands 109 CreateaProjectWithouttheSetupCaptureWizard 109 Customizingthesnapshot.iniFile 110
8 ThinAppFileSystemFormatsandMacros 111
VirtualFileSystemFormats 111 ThinAppFolderMacros 111 ListofThinAppMacros 112 Processing%SystemRoot%inaTerminalServicesEnvironment 113
9 CreatingThinAppScripts 115
CallbackFunctions 115 ImplementScriptsinaThinAppEnvironment 116 .batExample 116 TimeoutExample 116 ModifytheVirtualRegistry 117 .regExample 117 StoppingaServiceExample 117 CopyingaFileExample 117 AddaValuetotheSystemRegistry 118 APIFunctions 119 AddForcedVirtualLoadPath 119 ExitProcess 119 ExpandPath 120 ExecuteExternalProcess 120 ExecuteVirtualProcess 121 GetBuildOption 121 GetFileVersionValue 121 GetCommandLine 122 GetCurrentProcessName 122 GetOSVersion 123 GetEnvironmentVariable 124 RemoveSandboxOnExit 124 SetEnvironmentVariable 124 SetfileSystemIsolation 125 SetRegistryIsolation 125 WaitForProcess 125
VMware, Inc.
10 MonitoringandTroubleshootingThinApp 127
ProvidingInformationtoTechnicalSupport 127 LogMonitorOperations 127 TroubleshootActivitywithLogMonitor 128 PerformAdvancedLogMonitorOperations 128 LogFormat 130 TroubleshootingSpecificApplications 134 TroubleshootRegistrySetupforMicrosoftOutlook 134 ViewingAttachmentsinMicrosoftOutlook 134 StartingExplorer.exeintheVirtualEnvironment 135 TroubleshootingJavaRuntimeEnvironmentVersionConflict
135
Glossary
137
Index 141
VMware, Inc.
Intended Audience
ThisbookisintendedforanyonewhoinstallsThinAppanddeployscapturedapplications.Typicalusersare systemadministratorsresponsibleforthedistributionandmaintenanceofcorporatesoftwarepackages.
Document Feedback
VMwarewelcomesyoursuggestionsforimprovingourdocumentation.Ifyouhavecomments,sendyour feedbacktodocfeedback@vmware.com.
Support Offerings
TofindouthowVMwaresupportofferingscanhelpmeetyourbusinessneeds,goto http://www.vmware.com/support/services.
VMware, Inc.
Legal Notice
ThinAppusestheregularexpressionlibraryoriginallywrittenbyHenrySpencer. Copyright(c)1986,1993,1995byUniversityofToronto. WrittenbyHenrySpencer.Notderivedfromlicensedsoftware. Permissionisgrantedtoanyonetousethissoftwareforanypurposeonanycomputersystem,andto redistributeitinanyway,subjecttothefollowingrestrictions: 1 2 3 4 Theauthorisnotresponsiblefortheconsequencesofuseofthissoftware,nomatterhowawful,evenif theyarisefromdefectsinit. Theoriginofthissoftwaremustnotbemisrepresented,eitherbyexplicitclaimorbyomission. Alteredversionsmustbeplainlymarkedassuch,andmustnotbemisrepresented(byexplicitclaimor omission)asbeingtheoriginalsoftware. Thisnoticemustnotberemovedoraltered.
10
VMware, Inc.
Installing ThinApp
ThinApp Requirements
ReviewtherequirementsforoperatingsystemsandcapturedapplicationsbeforeinstallingThinApp.
32bitplatformsincludeWindowsNT,Windows2000,Windows XP,WindowsXPE,Windows2003 Server,WindowsVista,WindowsServer2008,Windows7 64bitplatformsincludeWindowsXP64bit,Windows200364bit,WindowsVista64 bit, Windows Server 2008 64bit,Windows Server 2008 R2 64bit,Windows 7 64 bit 16bitapplicationsrunningon32bitWindowsoperatingsystems 32bitapplicationsrunningon32bitand64bitWindowsoperatingsystems TerminalServerandCitrixXenapp
ThinAppsupportsJapaneseapplicationscapturedandrunonJapaneseoperatingsystems. CertainoperatingsystemsandapplicationsarenotsupportedbyThinApp.
VMware, Inc.
11
Applicationsrequiringinstallationofkernelmodedevicedrivers ODBCdriversworkbecausetheyareusermodedrivers.
Device Drivers
ApplicationsthatrequiredevicedriversdonotworkwhenpackagedwithThinApp.Youmustinstallthose devicedriversintheiroriginalformatonthehostcomputer.BecauseThinAppdoesnotsupportvirtualized devicedrivers,youcannotuseThinApptovirtualizeantivirus,VPNclients,personalfirewalls,anddiskand volumemountingrelatedutilities. IfyoucaptureAdobeAcrobat,youcanmodifyandsavePDFfiles,butyoucannotusethePDFprinterdriver thatenablesyoutosavedocumentstoPDFformat.
Shell Integration
SomeapplicationsthatprovideshellintegrationhavereducedfunctionswhentheyexistinaThinApp package.Forexample,avirtualapplicationthatintegrateswithWindowsExplorercannotaddspecificentries totheWindowsExplorercontextmenus.
12
VMware, Inc.
VMware, Inc.
13
14
VMware, Inc.
Capturing Applications
VMware, Inc.
15
16
VMware, Inc.
5 6
VMware, Inc.
17
(Optional)ChangethemessagethatappearsforusersthatThinAppcannotauthorize.
18
VMware, Inc.
WhenyouselectMergedisolation,ThinAppcompletesthefollowingoperations:
SetstheDirectoryIsolationModeparameterinthePackage.inifiletoMerged. SetsupexceptionsthatapplyWriteCopyisolationtothefollowingdirectoriesandtheirsubdirectories:
%AppData% %Common AppData% %Local AppData% %Program Files Common% %ProgramFilesDir% %SystemRoot% %SystemSystem% ThinAppretainsMergedisolationmodeforthe%SystemSytem%\spoolsubdirectorybycreatingan exceptiontothe%SystemSystem%parentdirectoryisolationmode.
SetstheDirectoryIsolationModeparameterinthePackage.inifiletoWriteCopy. SetsupexceptionsthatapplyMergedisolationtothesedirectories
VMware, Inc.
19
20
VMware, Inc.
VMware, Inc.
21
4 5 6
22
VMware, Inc.
3 4 5
VMware, Inc.
23
3 4
24
VMware, Inc.
Anyrequiredprinter,suchasacorporateprinter,installedbeforetheprescanoperationintheSetup Capturewizard.
ThisprocessassumesthatyouarefamiliarwiththeSetupCapturewizard.Youcanmodifytheprocess accordingtoyourenvironment.
VMware, Inc.
25
10
11 12
OntheChoosetheinstallationyouwantdialogbox,clicktheCustomizebutton. OntheInstallationOptionstab,customizetheoptionstocapturetheappropriatefilesandpreventa MicrosoftOfficeprintererror. a b c d e f SelectMicrosoftOffice>RunallfromMyComputer. Clicktheplus (+)symbolnexttotheOfficeToolsmenu. Clicktheplus (+)symbolnexttotheMicrosoftOfficeDocumentImagingmenu. IntheMicrosoftOfficeDocumentImageWriterdropdownmenu,selectNotAvailable. ClickInstallNowtoinstallMicrosoftOffice2007. Closetheinstallationsetup.
(Optional)UseVMwareWorkstationtotakeasnapshotofthevirtualmachine. Thisfeaturecreatesanimagethatyoucanreverttowhenyouaddpluginsorupdates.
26
VMware, Inc.
ThedeploymentofMicrosoftOffice2007usesanMSIpackage.
(Optional)Tosavespace,deletethefollowingdirectoriesandfilesthatMicrosoftOfficedoesnotrequire:
VMware, Inc.
27
ThinAppmustbeinstalledonthesamemachine.
28
VMware, Inc.
protocol hostname
port /path
Eachentrymustbeonaseparateline.
VMware, Inc.
29
5 6
ThevirtualInternetExplorer6onWindowsXPpackageisbuilt.
30
VMware, Inc.
ThesilentcaptureagentthenreturnscontroltoThinAppConverter,whichrevertsthevirtualmachinestotheir precapturestate,usingtheirpoweredoffsnapshots. Theprocessisthenrepeatedforthenextapplicationinstallationprocessthatneedstobeconverted.When multiplevirtualmachinesarespecified,thesilentcaptureagentrunsonthevirtualmachinessimultaneously. Asavirtualmachinebecomesavailable,itisonceagainusedforconvertingthenextapplication Figure 2-1. Overview of the Conversion Process
VMware, Inc.
31
Thevirtualmachinesthatareusedintheconversionprocessmusthavethefollowingitemsinstalled:
WindowsXPwithServicePack3,WindowsVista,orWindows7 ThelatestversionofVMwareTools
HostEnvironment
TheHostEnvironmentsectionoftheconfigurationfilecontainstheconnectionparametersforconnectingto VMwareESXServer,VMwarevCenterServer,orVMwareWorkstationonalocalmachine. [HostEnvironment]parametersaremandatory.
VirtualMachineHost ThenameofthevirtualmachinehosttowhichThinAppConverteristoconnect.
32
VMware, Inc.
Examples ThefollowingexampleshowsavirtualmachinespecifiedbyESXserverhostname.
[HostEnvironment] VirtualMachineHost=MyEsx.vmware.com
ThefollowingexampleshowsavirtualmachinespecifiedbyIPaddress.
[HostEnvironment] VirtualMachineHost=10.13.11.23
Thefollowingexampleshowsalocalmachinespecifiedaslocalhost.
[HostEnvironment] VirtualMachineHost=localhost
VirtualMachineN
TheVirtualMachineNsectionoftheconfigurationfilecontainsalistoftheWindowsbasedvirtualmachines thatwillbeusedintheconversionprocess.IfyourunThinAppConverter.exeinavirtualmachine,donot specifythatvirtualmachineintheVirtualMachineNlist,becausethatvirtualmachinecannotthenbeusedfor theconversionprocess. CreateaVirtualMachineX sectionforeachvirtualmachinethatyouwanttoinclude,andspecifytheir parameters.Xis1,andsubsequentvirtualmachinesectionsarenumberedsequentially. [VirtualMachineN]parametersaremandatory. VmxPath Specifytheconfigurationpathofthevirtualmachine.
VMware, Inc.
33
ForESXServerorvCenterServer,youcanidentifythevirtualmachineconfigurationfilepathusingthe vSphereClient. Identify the virtual machine configuration path using the vSphere Client 1 2 3 RightclickthevirtualmachineandselectEditSettings. ClicktheOptionstab,andcopythestringfromtheVirtualMachineConfigurationFilefield. Usethisstringasthevirtualmachineconfigurationfilepath.
ForWorkstation,specifytheentirefilepathonthehostonwhichtheVMXconfigurationfileresides.For example,C:\MyVMs\Windows XP\WindowsXP.vmx.Donotplacethepathinquotationmarks,evenifthepath containsaspace. UserName Avalidusernameforthevirtualmachineguestoperatingsystem.Theusermusthaveadministrator privilegesforthevirtualmachineguestoperatingsystem. YoucanuseUPNformatwhenyouspecifyausername.Forexample,user@domain.com. PasswordorPasswordBase64 Avalidpasswordforthevirtualmachineguestoperatingsystem.Youhavethefollowingoptionswhenyou specifypasswords:
NOTEDonotplacethepathinquotationmarks,evenifthepathcontainsaspace.
34 VMware, Inc.
Settings
TheSettingssectionoftheconfigurationfilecontainstheparametersfortheapplicationinstallerdirectoryand ThinAppprojectoutputdirectory,intheformofUNC.Italsocontainsseveralparameterscontrollingthe conversionprocessbehavior. ThinAppConverteronlyrequiresreadonlypermissionsforthenetworksharethatcontainstheapplication installers.Itrequiresread/writepermissionsforthenetworksharethatcontainstheThinAppprojects. Ifinputandoutputdirectoriesareonthesamefileserver,youmustusethesameuseraccounttoconnectthem. InputUncPath SpecifythenetworkshareUNCpathfortheapplicationinstallers.Forexample:\\fileserver\sharename, or\\fileserver\sharename\dirname. InputMountUserName Specifytheusernameusedforconnectingtothatnetworkshare.UPNformatcanbeusedwhenyouspecify adomainuser,forexampleuser@domain.com InputMountPasswordorInputMountPasswordBase64 Specifythepasswordforconnectingtothenetworkshare.Youhavethefollowingoptionswhenyouspecify passwords:
InputMountPasswordPrompt Specifiesthattheuserbepromptedtoenterapassword. Ifyoudonotwanttostorethenetworksharepasswordintheconfigurationfile,specifythevalueastrue. Whensettotrue,apromptalwaysappears,evenifapasswordisspecifiedintheconfigurationfile. OutputUncPath SpecifythenetworkshareUNCpathtothelocationofthegeneratedThinAppprojects. Forexample:\\fileserver\sharename,or\\fileserver\sharename\dirname OutputMountUserName SpecifytheusernameusedforconnectingtotheOutputUncPath networkshare.UPNformatcanbeusedto specifyadomainuser,forexample,user@domain.com. OutputMountPasswordorOutputMountPasswordBase64 Specifythepasswordforconnectingtothenetworkshare.Youhavethefollowingoptionswhenyouspecify passwords:
Youcanentercleartext. Youcanspecifyabase64encodedpasswordfortheOutputMountPasswordBase64parameter.
2 3 4 5 6
IfnoneofthestepsenableThinAppConvertertofindacorrectinstallationcommand,thesubdirectoryis skipped.Awarningisloggedinthelogfile. YoumustremoveallnetworkconnectionstothefileserverreferenceintheINIfilefromthehostonwhichyou runThinAppConverter,topreventconflictbetweenusercredentials. PackageIniOverrideFile SpecifythefilepathtotheglobalPackage.inioverridefile. ThisoptionalparameterenablesyoutospecifyaglobaloverridefileforPackage.ini thatisgeneratedfor eachThinAppproject.ThevaluesintheoverridefilearemergedintoPackage.iniintheThinAppproject thatisgeneratedforeachapplication. Globaloverridesareusefulwhenyouhaveaglobalpolicysetting,forexample,PermittedGroupin Package.ini. APackage.inioverridefileisformattedlikeastandardWindowsINIfile.YoucanaddINIparametersand valuesthatarerelevanttothePackage.inifile. Thepathisrelativetotheapplicationinstallersnetworkshare.Usingtheexampleforspecifyingthenetwork sharesfortheapplicationinstallersandThinAppprojects,ifyouspecify PackageIniOverrideFile=override.ini,ThinAppConvertertriestofindthefileunder \\AppInstallerServer\AppInstaller.Youcanprovideamoreexplicitvaluebyusingpredefined environmentvariables.Formoreinformation,seePredefinedEnvironmentVariablesonpage 38. YoucanspecifyaPackage.inifileforeachapplication.Thisprocessisdescribedaspartofthe [AppSettings:AppName]section. ExclusionList SpecifyacommaorsemicolonseparatedlistofapplicationdirectoriesthatThinAppwillskipwhensearching forapplicationinstallers. Thelistiscaseinsensitive. YoucanspecifywildcardsforDOSstylefilenames.Forexample,Microsoft*. ?and*aresupported.
36
VMware, Inc.
Example Followingisanexampleofanexclusionspecificationusingawildcard.
[Settings] ExclusionList=App?.old;FireFox1.0
ProjectPostProcessingCommand Specifythefilepathtotheprojectpostprocessingcommand. Thefilepathisrelativetotheapplicationinstallersnetworkshare.Usingtheexampleforspecifyingthe networksharesfortheapplicationinstallersandThinAppprojects,ifyouspecify ProjectPostProcessingCommand=addscript.bat,ThinAppConverterwilltrytofindthefileunder \\AppInstallerServer\AppInstaller.Youcanprovideamoreexplicitvaluebyusingpredefined environmentvariables.Formoreinformation,seePredefinedEnvironmentVariablesonpage 38. StopOnError SpecifywhetherThinAppConvertershouldstopconvertinganapplicationifitencountersanerror,or continuewiththeotherapplications.Thedefaultvalueisfalse. BuildAfterCapture SpecifywhethertheThinAppConvertershouldbuildtheThinAppProjectsintopackagesfollowingcapture. Thedefaultvalueistrue. DetectIdle SpecifywhetherThinAppConvertershouldtrytodetectifanapplicationinstallerisstalled,forexamplewhen theapplicationiswaitingforuserinputontheguestvirtualmachinebecauseincorrectsilentinstallation switcheswerespecified. Thedefaultvalueistrue.ThinAppConvertermightnotbeabletodetectallsituationsinwhichtheinstaller isidle. InstallerTimeout SpecifyhowlongThinAppConvertershouldwaitforanapplicationinstallertofinishbeforeitquits. Bydefault,thevalueis7200seconds.
AppSettings:AppName
Thisoptionalsectionprovidesparametersthatyoucanusetoaddsettingsthatarespecifictoanapplication. AppNameistheactualnameofthesubdirectorythatcontainstheapplicationinstaller.Theseparameterscan beaddedtoeachAppSettingssection.Inmostcircumstances,youwillnotneedtoconfigurethissection. InstallationCommand SpecifyhowThinAppConvertershouldstarttheapplicationinstaller.Ifthereisnovalue,ThinAppConverter attemptstoselectoneinstallationcommandusingthelogicdescribedinThinAppConverterLogicfor DetectingtheApplicationInstallersonpage 36. PackageIniOverrideFile ThePackage.inioverridefilethatisappliedtoasingleThinAppproject.Whenthisparameterhasavalue,the globaloverridefileisprocessedfirst,followedbythisapplicationspecificoverridefile. Thefilepathisrelativetotheapplicationinstallersubdirectory.Usingtheexamplethatfollowsthe ProjectPostProcessingCommand parameterdescription,ifyouspecify PackageIniOverrideFile=override.ini,ThinAppConvertertriestofindthefileunder \\AppInstallerServer\AppInstaller\Adobe.Youcanprovideamoreexplicitvaluebyusingpredefined environmentvariables.Formoreinformation,seePredefinedEnvironmentVariablesonpage 38.
VMware, Inc.
37
Example
FollowingisanexampleofhowpredefinedvariablescanbeusedinthePackageIniOverrideFile, ProjectPostProcessingCommand,andInstallationCommandparameters.
[Settings] PackageIniOverrideFile=%AppInstallersRootDir%\AppSyncSettings.ini ;will resolve to \\AppInstallerServer\AppInstaller\AppSyncSettings.ini [AppSettings:Adobe] InstallationCommand=AdbeRdr920_en_US.exe /sAll PackageIniOverrideFile=%AppInstallerDir%\override.ini ;will resolve to \\AppInstallerServer\AppInstaller\Adobe\AppSyncSettings.ini
38
VMware, Inc.
Deploying Applications
Creatingexecutablefilesforthecapturedapplications. Storingtheexecutablefilesonanetworkshare.
VMware, Inc.
39
40
VMware, Inc.
IftheservernameisDEPLOYSERVERandtheshareisThinApps,usethefollowingexampletoregister MicrosoftWordfortheloggedinuser.
ThinReg.exe "\\DEPLOYSERVER\ThinApps\Microsoft Office 2007 Word.exe"
UsethefollowingexampletoregisterallMicrosoftOfficeapplicationsinthespecifieddirectoryforthe loggedinuser.
ThinReg.exe "\\DEPLOYSERVER\ThinApps\Microsoft Office *.exe"
VMware, Inc.
41
thinreg.exe /q <unknown_option>
/u,/unregister, /uninstall
UnregisterMicrosoftWordforthecurrentuser. thinreg.exe /u "\\<server>\<share>\Microsoft Office 2007 Word.exe" UnregisterallMicrosoftOfficeapplicationsfor thecurrentuserandremovetheAdd/Remove Programsentry. thinreg.exe /u "\\server\share\Microsoft Office *.exe" Ifauserregistersthepackagewiththe/a parameter,youmustusethe/aparameterwhen unregisteringthepackage. thinreg.exe /u /a *.exe
/r,/reregister
Reregistersapackage. Undertypicalcircumstances,the thinreg.exeutilitycandetectwhethera packageisalreadyregisteredandskipsit. The/roptionforcesthethinreg.exe utilitytoreregisterthepackage. Preventstheremovalofregistration informationevenifyouarenolonger authorizedtoaccessanapplication package. Withoutthisoption,thethinreg.exe utilityremovestheregistration informationforthatpackageifitdetects youarenolongerauthorizedtoaccessthe package. ThinAppstoresauthorizationinformation inthePermittedGroupsparameterofthe Package.inifile.
thinreg.exe /r "\\<server>\<share>\Microsoft Office 2007 Word.exe" Ifauserregistersthepackagewiththe/a parameter,youmustusethe/awhen reregisteringthepackage. thinreg.exe /r /a *.exe
/noarp
Preventsthecreationofanentryinthe Add/RemoveProgramscontrolpanel applet. Startsthethinreg.exeutilityon MicrosoftVistawithoutelevated privileges.Standarduserscanstartthe utilitywithoutauseraccountcontrol (UAC)popupwindow. Whenthethinreg.exeutilitydetectsa needformoreprivileges,suchasthe privilegesrequiredforthe/allusers parameter,theutilityrestartsitselfasa privilegedprocessandgeneratesaUAC popupwindow.The/norelaunch optionblocksthisrestartprocessand causestheregistrationtofail.
thinreg.exe /q /noarp "\\<server>\<share>\Microsoft Office 2007 Word.exe" thinreg.exe /q /norelaunch "\\<server>\<share>\Microsoft Office 2007 Word.exe"
/norelaunch
42
VMware, Inc.
TheMSIFileNameparameternamesthepackage. Forexample,includeMSIFilename=Firefox30.msiinthePackage.inifile.
VMware, Inc.
43
FormoreinformationabouttheMSIDefaultInstallAllUsersparameter,seeMSIDefaultInstallAllUsers onpage 96. Force MSI Deployments for Each User or Each Machine Regardlessoftheparametervaluesspecifiedatbuildtime,youcanoverrideMSIsettingsatdeploymenttime. Forexample,ifyoucreatedthedatabasewithavalueof1fortheMSIDefaultInstallAllUsersparameter, youcanstillforceindividualuserdeploymentsforFirefox3.0withthemsiexec /i Firefox30.msi ALLUSERS=""command. IfyouusetheALLUSERS=""argumentforthemsiexeccommand,ThinAppextractsthecapturedexecutable filestothe%AppData%userdirectory. Force MSI deployments for individual users or for all users on a machine
Override the MSI Installation Directory YoucanusethemsiexeccommandtooverridethedefaultMSIinstallationdirectory. WhenThinAppperformsanindividualmachineMSIdeployment,thedefaultinstallationdirectoryisthe localizedequivalentof%ProgramFilesDir%\<inventory_name> (VMware ThinApp).IfyouinstallaFirefox packageforeachmachine,thepackageresidesin%ProgramFilesDir%\Mozilla Firefox (VMware ThinApp). WhenThinAppperformsanMSIdeploymentforindividualusers,thedefaultinstallationdirectoryis %AppData%\<inventory_name> (VMware ThinApp). Inbothcases,youcanoverridetheinstallationdirectorybypassinganINSTALLDIRpropertytothemsiexec command. Override the MSI installation directory Fromthecommandline,typethemsiexec /i <database>.msi INSTALLDIR=C:\<my_directory>\<my_package>command.
44
VMware, Inc.
YoumustbeconnectedtoyourActiveDirectorydomainduringthebuildprocessandthegroupsyou specifymustexist.ThinApplooksuptheSIDvalueduringthebuild. Ifyoudeleteagroupandrecreateit,theSIDmightchange.Inthiscase,rebuildthepackageto authenticateagainstthenewgroup. Whenusersareoffline,ThinAppcanauthenticatethemusingcachedcredentials.Iftheuserscanloginto theirmachines,authenticationstillworks.Useagrouppolicytosettheperiodwhencachedcredentials arevalid. CachedcredentialsmightnotrefreshonclientsuntilthenextActiveDirectoryrefreshcycle.Youcanforce agrouppolicyonaclientbyusingthegpupdatecommand.Thiscommandrefresheslocalgrouppolicy, grouppolicy,andsecuritysettingsstoredinActiveDirectory.YoumightlogoutbeforeActiveDirectory credentialsarerecached. Certaingroups,suchastheAdministratorsgroupandEveryonegroup,havethesameSIDonevery ActiveDirectorydomainandworkgroup.OthergroupsyoucreatehaveadomainspecificSID.Users cannotcreatetheirownlocalgroupwiththesamenametobypassauthentication. ActiveDirectoryDomainServicesdefinesecuritygroupsanddistributiongroups.Ifyouusenested groups,ThinAppcanonlysupportnestedsecuritygroups.
VMware, Inc.
45
CapturingtheservicebyusingThinApp RegisteringtheserviceonthephysicalmachinebyusingThinReg
Create a virtual service for automatic startup 1 2 Onacleanlocalmachine,useThinApptocapturetheservice. Afterthepostscanprocessiscomplete,intheSetupCaptureReadytoBuilddialog,click EditPackage.ini. ThePackage.inifileopensinatexteditor. 3 Searchfortheservicesentry. Theentryisfollowedbythenameoftheservicethatyoucaptured. Bydefault,theentryiscommentedout. 4 5 6 Removethesemicolon(;)fromthestartoftheline. SavethePackage.inifile. BuildtheThinAppproject.
Youcannowregisteryourvirtualservicesothatitcanbemanagedbyusingthenativeservicesmanagement tools. Register the virtual service on a physical machine 1 2 RuntheThinReg.exeapplication. Atthecommandline,typeC:\Program Files\VMware\VMware ThinApp\ThinReg /a *.exe. Youmustuse/a toregisterservices.IfyourunThinAppwithoutthisoption,theserviceisnotregistered. Youcanchangethepath,ifrequiredforyoursystem.
46
VMware, Inc.
Jills Sandbox
shared folder
Sams Sandbox
Joes Sandbox
VMware, Inc.
47
64KB (Block 2)
decompressed (Block 2)
64KB (Block 3)
64KB (Block 4)
64KB (Block 5)
48
VMware, Inc.
Accessing Printers
Acapturedapplicationhasaccesstoanyprinterinstalledonthecomputerthatitisrunningon.Captured applicationsandapplicationsinstalledonthephysicalsystemhavethesameprintingability. YoucannotuseThinApptovirtualizeprinterdrivers.Youmustmanuallyinstallprinterdriversonacomputer.
Accessing Drivers
Acapturedapplicationhasfullaccesstoanydevicedriverinstalledonthecomputerthatitisrunningon. Capturedapplicationsandapplicationsinstalledonthephysicalsystemhavethesamerelationshipwith devicedrivers.Ifanapplicationrequiresadevicedriver,youmustinstallthedriverseparatelyfromthe ThinApppackage. Sometimes,anapplicationwithoutanassociateddrivermightfunctionwithsomelimitations.Forexample, AdobeAcrobatinstallsaprinterdriverthatenablesapplicationssystemwidetorenderPDFfilesusingaprint mechanism.WhenyouuseacapturedversionofAdobeAcrobat,youcanuseittoload,edit,andsavePDF fileswithouttheprinterdriverinstallation.Otherapplicationsdonotdetectanewprinterdriverunlessthe driverisinstalled.
Accessing the Local Disk, the Removable Disk, and Network Shares
Whenyoucreateaprojectstructure,ThinAppconfiguresisolationmodesfordirectoriesandregistrysubtrees. Theisolationmodescontrolwhichdirectoriestheapplicationcanreadandwritetoonthelocalcomputer. ReviewthedefaultconfigurationoptionsdescribedinTable 32. Table 3-2. Default Configuration Options
Component Harddisk Description AnexampleofaharddiskisC:\.Isolationmodesselectedduringthe captureprocessaffectaccess.UserscanwritetotheirDesktopandMy Documentsfolders.Othermodificationsthattheapplicationmakesgo intotheusersandbox.Thedefaultlocationofthesandboxisinthe ApplicationDatadirectory. Bydefault,anyuserwhohasaccessrightscanreadorwritetoany locationonaremovabledisk.
Removabledisk
VMware, Inc.
49
Starting Services
Capturedapplicationscanstartandrunsysteminstalledservicesandvirtualservices.Systemservicesrunin thevirtualenvironmentthatcontrolsthemodificationsthattheservicescanmake.
50
VMware, Inc.
ODBC Office 10.0 11.0 8.0 9.0 Common Delivery Live Meeting Outlook PowerPoint Visio
WhenThinApprunsacapturedversionofMicrosoftVisio2007,ThinAppsetsthe HKLM\Software\Microsoft\Officeregistrysubtreetofullisolation.Thissettingprevents Microsoft Visio 2007fromfailingbecauseofregistrysettingsthatmightpreexistonthehostcomputeratthe samelocation.
VMware, Inc.
51
Figure 34showstheregistryfromtheperspectiveofthecapturedMicrosoftVisio2007. Figure 3-4. Windows Registry as Seen by the Captured Microsoft Visio 2007
Office 12.0 Access Connectivity Common Registration User Settings Visio 10.0 11.0 8.0 9.0 Common Delivery Live Meeting Outlook PowerPoint Visio
52
VMware, Inc.
54
VMware, Inc.
Completing the Application Sync Process When Applications Create Child Processes
Whenacapturedapplicationcreateschildprocesses,ThinAppcannotcompletetheApplicationSyncprocess. Forexample,youmightcreateMicrosoftOffice2003andMicrosoftOffice2007packages,modifythe AppSyncURLparameterinthePackage.inifileforbothpackages,andcopytheMicrosoftOffice2007package toaWebserverandtheMicrosoftOffice2003packagetoaclientmachine. IfyoustarttheMicrosoftOffice2003packagebeforetheexpirationtimesetintheAppSyncExpirePeriod parameterofthePackage.inifile,ThinAppcandownloadtheupdateinthebackgroundasyouworkwith theapplicationbutunabletoshowtheupdatedversionthenexttimeyoustarttheapplication.Ifyoustartthe applicationafterthepackageexpires,ThinAppisunabletodownloadtheupdateintheforegroundandrestart theapplicationwhenthedownloadisready. MicrosoftOffice2003andMicrosoftOffice2007areexamplesofapplicationsthatcreatechildprocesses. ThinAppcannotcompleteApplicationSyncupdatesuntilallchildprocessesstop.Youcanperformoneofthe followingtaskstoresolvetheissue:
Preventthestartupofthechildprocess,suchasthectfmon.exeprocessassociatedwithMicrosoftOffice andInternetExplorerapplications.
Prevent the Startup of the ctfmon.exe Process for Microsoft Office and Internet Explorer Preventingthestartupofthectfmon.exeprocessrequiresknowledgeoftheThinAppsandboxand sbmerge.exeutility.Forinformationaboutthesbmerge.exeutility,seeUpdatingApplicationswith RuntimeChangesonpage 61.
VMware, Inc.
55
Prevent the startup of the ctfmon.exe process 1 Ifyoudidnotactivatethecmd.exeentrypointduringthecaptureprocess,settheDisabledparameter forthecmd.exeentryinthePackage.inifileto0andrebuildthepackagewiththebuild.batutility. Thisgeneratesanexecutablefileforthecmd.exeentrypointinthe/bindirectory. 2 3 4 5 6 7 8 Copythe/bindirectoryinthecapturedapplicationdirectorytoacleanvirtualmachineordeletethe sandboxfortheMicrosoftOfficepackage. Doubleclickthecmd.exeentrypoint. IntheWindowscommandprocessor,runtheINTL.CPLcommand. IntheLanguagestaboftheRegionalandLanguagesdialogbox,clickDetails. IntheAdvancedtaboftheTextServicesandInputLanguagesdialogbox,selecttheTurnoffadvanced textservicescheckbox. ClickOKinalltheopendialogboxesandleavetheWindowscommandprocessoropen. UnregistertheMSIMTF.dllandMSCTF.dllfileswiththeREGSVR32.EXE/U <DLL_file>command. Seeknowledgebasearticle282599intheMicrosoftWebsite. 9 10 ClosetheWindowscommandprocessor. IfthevirtualmachinedoesnotresideonthesamemachinewhereThinAppisinstalled,copythesandbox fromthepackagetothepackagingsystem. Thedefaultsandboxlocationis%APPDATA%\Thinstall. 11 Fromthestandardcommandpromptonthepackagingsystem,usethesbmerge.exeutilitytomergethe updatedsandboxwiththepackage. AsamplecommandisSBMERGE APPLY ProjectDir "C:\Program Files\VMware \VMware ThinApp\Captures\Microsoft Office Professional 2007" SandboxDir "%APPDATA%\Thinstall\Microsoft Office Pro 2007". 12 Rebuildthepackageandtestthepackageonacleanvirtualmachinetoconfirmthatthectfmon.exe processnolongerexists.
56
VMware, Inc.
System Files
Base Application
Component Package
Local Disk (C:) Documents and Settings Program Files Base Application Common Files ComPlus Applications Component1
VMware, Inc.
57
Link an application to Microsoft .NET 1 Capturetheinstallationofthe.NET2.0Framework. Duringthecaptureprocess,youmustselectatleastoneuseraccessibleentrypoint. 2 Renamethe.exefilethatThinAppproducestoa.datfile. Thisrenamingpreventsusersfromaccidentallyrunningtheapplication. Thenameofthe.datfileyouselectdoesnotmatterbecauseusersdonotrunthefiledirectly. For example,usedotnet.dat. 3 4 5 6 7 Savethe.NETprojecttoC:\Captures\dotnet. Capturethebaseapplicationbyusingthesamephysicalsystemorvirtualmachinewiththe.NET frameworkalreadyinstalled. SavetheprojecttoC:\Captures\MyApp. OpenthePackage.inifileinthecapturedapplicationfolderforthebaseapplication. EnabletheRequiredAppLinksparameterforthebaseapplicationbyaddingthefollowinglineafterthe [BuildOptions]entry.
RequiredAppLinks=dotnet.dat
58
VMware, Inc.
3 4
Forinformationaboutnestedlinks,seeSetUpNestedLinkswithApplicationLinkonpage 58.
VMware, Inc.
59
60
VMware, Inc.
VMware, Inc.
61
sbmerge.exe Commands
Thesbmerge.exe Printcommanddisplayssandboxchangesanddoesnotmakemodificationstothe sandboxororiginalproject. Thesbmerge.exe Applycommandmergeschangesfromthesandboxwiththeoriginalproject.This commandupdatestheprojectregistryandfilesystemtoreflectchangesanddeletesthesandboxdirectory. Usage
"C:\Program Files\VMware\VMware ThinApp\sbmerge" Print [<optional_parameters>] "C:\Program Files\VMware\VMware ThinApp\sbmerge" Apply [<optional_parameters>]
-SandboxDir <sandbox_path>
62
VMware, Inc.
Duringthesetupcaptureprocess. Insidethevirtualenvironment. Applicationswithautoupdatecapabilitiescanundergoupdates.Iftheupdateisapatch.exefile,the patchprogramcanruninthevirtualenvironmentandrunfromacmd.exefileentrypoint.Changesoccur inthesandboxduringautomaticupdatesormanualupdatestoallowyoutoreverttotheoriginalversion bydeletingthesandbox. Ifyouapplypatchesinthevirtualenvironmentonacentralpackagingmachine,youcanusethe sbmerge.exeutilitytomergesandboxchangesmadebytheupdatewiththeapplication.See ApplicationUpdatesThattheAdministratorTriggersonpage 60.
File Locks
Startinganapplicationlockstheexecutablefilepackage.Youcannotreplace,delete,ormovetheapplication. Thisfilelockensuresthatanycomputeroruserwhoaccessesaspecificversionofanapplicationcontinuesto havethatversionavailableaslongastheapplicationprocessesandsubprocessesarerunning. Ifyoustoreanapplicationinacentrallocationformanyusers,thisfilelockpreventsadministratorsfrom replacingapackagedexecutablefilewithanewversionuntilallusersexittheapplicationandreleasetheir locks.
VMware, Inc.
63
5 6
relink Examples
Therelink.exeutilityhasanoptional-Recursiveflagandcantargetasinglepackageormultiplepackages.
relink [-Recursive] <target> [<target> ...]
Forexample,youcanupdateanAdobeReaderpackagetothelatestinstalledThinAppversion.
relink AdobeReader.exe
Therelink.exeutilitycanuseawildcardpattern.
relink *.exe *.dat
Therelink.exeutilitycanusedirectorynamestoprocessallThinAppfilesinthatdirectory.
relink C:MyPackages
64
VMware, Inc.
Package.iniFileStructureonpage 66 ParametersThatApplytoPackage.inior##Attributes.iniFilesonpage 66 ConfiguringtheThinAppRuntimeonpage 66 ConfiguringIsolationonpage 68 ConfiguringFileandProtocolAssociationsonpage 70 ConfiguringBuildOutputonpage 71 ConfiguringPermissionsonpage 72 ConfiguringObjectsandDLLFilesonpage 74 ConfiguringFileStorageonpage 78 ConfiguringProcessesandServicesonpage 81 ConfiguringSizesonpage 83 ConfiguringLoggingonpage 86 ConfiguringVersionsonpage 86 ConfiguringLocalesonpage 87 ConfiguringIndividualApplicationsonpage 88 ConfiguringDependentApplicationswithApplicationLinkonpage 91 ConfiguringApplicationUpdateswithApplicationSynconpage 93 ConfiguringMSIFilesonpage 96 ConfiguringSandboxStorageandInventoryNamesonpage 100
VMware, Inc.
65
The[BuildOptions]sectionofthePackage.inifileappliestoallapplications.Individualapplications inherittheseparametersunlesstheentriesspecifictoapplicationsoverridethesesettings.Forexample,the [Adobe Reader 8.exe]sectionofthePackage.inifileforanAdobeReaderapplicationmighthavesettings thatoverridethelarger[BuildOptions]parameters.Theapplicationspecificparametersshowthe applicationentrypointsthatyoucreateduringthebuildprocess. The[FileList],[Compression],and[Isolation]parametersactas[BuildOptions]parameters,butare groupedseparatelyforbackwardcompatibilityreasons.Youcanaddthe[FileList]headingmanuallyto thefilewhenyouaddtheExcludePatternparameter. Parametersthatdonotapplytothestandardsectionscanresideunderanyheading.Parametersdonothave toappearinalphabeticalorder.
NetRelaunch
TheNetRelaunchparameterdetermineswhethertorestartanapplicationfromthelocaldiskwhenyourun theapplicationfromanetworkshareorremovabledisk,toaddresstheslowstartupofapplications. ThinAppsetsaninitialvalueoftheNetRelaunchparameterthatdetectswhetheranapplicationrunsfroma networkdriveoraremovabledisk,andusesastubexecutablefileonthelocalharddisktorestarttheapplication. ThisprocessaddressesperformanceproblemsthatSymantecAntiVirusgenerateswhenittriestodoacomplete scanofexecutablefilesthatopenfromanetworkshareorremovabledisk,andonexecutablefilesthatmakethe initialnetworkconnections.Thescancanaffectstarttimesforlargeexecutablefiles. BecausealargenumberofdesktopshaveSymantecAntiVirus,ThinAppenablesapplicationstoopenfroma networksharewithoutincurringlengthyscantimes.Whentheapplicationrunsfromanetworkshareor removabledisk,ThinAppcreatesastubexecutablefileinthedirectorythattheCachePathparametersetson thelocaldiskandrestartstheapplicationfromthisstubexecutablefile.Thestubexecutablefilecanloadthe runtimefromthelargepackageandreadtherestoftheapplicationfromitsoriginallocationonthenetwork. SymantecAntiVirusperceivesthattheapplicationislocalanddoesnotscanthelargerexecutablefileonthe networkshareorremovabledisk.
66 VMware, Inc.
Examples
IfyourapplicationissmalloryouknowthatSymantecAntiVirusisnotinstalledonthedesktopstowhichyou aredeployingtheapplication,youcanmodifytheNetRelaunchparameterforstrongerinitialstartup performance.
[BuildOptions] NetRelaunch=0
RuntimeEULA
TheRuntimeEULAparametercontrolstheEndUserLicenseAgreementdisplayforthepackage. This parameteraddresseslegacyEndUserLicenseAgreementrequirements.VMwaredoesnotrequirea runtimeEULAforThinApppackages. Donotmodifythevalueofthisparameter.
Examples
TheRuntimeEULAparameterpreventsthedisplayoftheEndUserLicenseAgreement.
[BuildOptions] ;Default: do not show an Eula RuntimeEULA=0
VirtualComputerName
TheVirtualComputerNameparameterdetermineswhethertovirtualizethecomputername,toavoidnaming conflictsbetweenthedeploymentsystemandthecapturesystem. Applicationscanusethenameofthecomputeronwhichtheyareinstalled,orconnecttoadatabaseanduse thenameofthecomputerintheconnectionstring.Becausethecapturesystemisdifferentfromthe deploymentsystem,capturedapplicationsthatrequireacomputernamemustvirtualizethecomputername toensurethattheapplicationcanrunonanymachine. ThinAppcommentsouttheinitialsettingoftheVirtualComputerNameparameter.Thisparameterusesa stringthatGetComputerNameandGetComputerNameExAPIfunctionsreturninavirtualapplication.
Examples
IfthecapturesystemlackstheLOCALHOSTname,ThinAppcommentsouttheVirtualComputerName parameter.
;VirtualComputerName=<original_machine_name>
VMware, Inc.
67
Wow64
TheWow64parametersimulatesa32bitenvironmentfor32bitapplicationsthatcannotrunona64bit Windowsoperatingsystem. Ifa32bitapplicationtriestohandleitsown64bitregistryredirection,youcanactivatethisparameterbefore buildingaproject.ThinAppcommentsouttheinitialsettingtopreventWindowsonWindows64bit (WOW64)emulation.
Examples
YoucanuncommenttheWow64parametertosimulatea32bitenvironmentfor32bitapplicationsona64bit operatingsystem.Forexample,avirtualized32bitOracleapplicationmightnotworkona64bitoperating system.
[BuildOptions] Wow64=0
QualityReportingEnabled
TheQualityReportingEnabledparameterspecifieswhetherVMwarecancollectanonymousdataona packagetoimproveThinAppapplicationsupport.VMwarecollectsapplicationinformationsuchasthe versionandnumberofapplicationfailures. Ifyouagreetoanonymousdatacollectionduringthecaptureprocess,theQualityReportingEnabled parameteruploadsdataeverytendays.
Examples
YoucanmodifytheQualityReportingEnabledparametertoturnoffThinAppdatacollection.
[BuildOptions] QualityReportingEnabled=0
LoadDotNetFromSystem
UsetheLoadDotNetFromSystemparametertosolvecompatibilityproblemsrelatedto.Netruntimescaptured aspartofaWindowsXPorWindowsVistapackagethatisrunningonWindows7byloadingthenative.Net binaryfilesinsteadofthebinaryfilescapturedinthevirtualapplicationpackage. Bydefault,thisparameteriscommentedoutinthePackage.inifile.Searchfor LoadDotNetFromSystem=Win7 andremovethecommenting.
Configuring Isolation
YoucanmodifyThinAppparameterstodeterminethereadandwriteaccesstothefilesystemandregistrykeys.
DirectoryIsolationMode
TheDirectoryIsolationModeparameterspecifiesthelevelofreadandwriteaccessfordirectoriestothe physicalfilesystem. ThecaptureprocesssetstheinitialvalueoftheDirectoryIsolationModeparameterinthePackage.inifile. Thisparametercontrolsthedefaultisolationmodeforthefilescreatedbythevirtualapplicationexceptwhen youspecifyadifferentisolationmodeinthe##Attributes.inifileforanindividualdirectory. Any unspecifieddirectories,suchasC:\myfolder,inherittheisolationmodefromthePackage.inifile. ThinAppprovidesonlytheMergedandWriteCopyisolationmodeoptionsinthecaptureprocess.Youcanuse theFullisolationmodeoutsidethewizardtosecurethevirtualenvironment.
68
VMware, Inc.
WithMergedisolationmode,applicationscanreadandmodifyelementsonthephysicalfilesystemoutside ofthevirtualpackage.SomeapplicationsrelyonreadingDLLsandregistryinformationinthelocalsystem image.TheadvantageofusingMergedmodeisthatdocumentsthatuserssaveappearonthephysicalsystem inthelocationthatusersexpect,insteadofinthesandbox.Thedisadvantageisthatthismodemightclutter thesystemimage.Anexampleofthecluttermightbefirstexecutionmarkersbysharewareapplications writtentorandomcomputerlocationsaspartofthelicensingprocess. WithWriteCopyisolationmode,ThinAppcaninterceptwriteoperationsandredirectthemtothesandbox. YoucanuseWriteCopyisolationmodeforlegacyoruntrustedapplications.Althoughthismodemightmake itdifficulttofinduserdatafilesthatresideinthesandboxinsteadofthephysicalsystem,thismodeisuseful forlockeddowndesktopswhereyouwanttopreventusersfromaffectingthelocalfilesystem. WithFullisolationmode,ThinAppblocksvisibilitytosystemelementsoutsidethevirtualapplication package.Thismoderestrictsanychangestofilesorregistrykeystothesandboxandensuresthatno interactionexistswiththeenvironmentoutsidethevirtualapplicationpackage.Fullisolationprevents applicationconflictbetweenthevirtualapplicationandapplicationsinstalledonthephysicalsystem.Donot usetheFullisolationmodeinthePackage.inifilebecausethatmodeblockstheabilitytodetectandload systemDLLs.YoucanuseFullisolationmodeasanoverridemechanisminthe##Attributes.inifiles. ThinAppcachestheisolationmodesfortheregistryandthefilesystematruntimeinthesandbox.Ifyou changetheisolationmodefortheprojectandrebuildtheexecutablefile,youmightdeletethesandboxforthe changetotakeeffect. Formoreinformationaboutthedefinitionsandeffectofisolationmodes,seeDefiningIsolationModesfor thePhysicalFileSystemonpage 18.
Examples
YoucanmodifytheDirectoryIsolationModeparameterwithWriteCopyisolationtoensurethatthe applicationcanreadresourcesonthelocalmachine,butnotwritetothehostcomputer.Thisisthedefault settingforthesnapshot.exeutility.Youmustplacetheparameterunderan[Isolation]heading.
[Isolation] DirectoryIsolationMode=WriteCopy
RegistryIsolationMode
TheRegistryIsolationModeparametercontrolstheisolationmodeforregistrykeysinthepackage.This settingappliestotheregistrykeysthatdonothaveexplicitsettings. Thecaptureprocessdoesnotsetthevalueofthisparameter.Youcanconfiguretheregistryisolationmode onlyinthePackage.inifile.ThinAppsetstheinitialregistryisolationmodetoWriteCopy.Forinformation aboutisolationmodeoptions,seeDirectoryIsolationModeonpage 68. DonotusetheFullisolationmodeinthePackage.inifilebecausethatmodeblockstheabilitytodetectand loadsystemDLLs.YoucanuseFullisolationmodeasanoverridemechanism.Youcanplaceexceptionstothe configuredRegistryIsolationModeparameterintheregistrykeytextfilesintheprojectdirectory.An exceptionmightappearinafile,suchasHKEY_CURRENT_USER.txt,asisolation_full HKEY_CURRENT_USER\Software\Macromedia. Allruntimemodificationstovirtualfilesinthecapturedapplicationarestoredinthesandbox,regardlessof theisolationmodesetting.Atruntime,virtualandphysicalregistryfilesareindistinguishabletoan application,butvirtualregistryfilesalwayssupersedephysicalregistryfileswhenbothexistinthesame location.Ifvirtualandphysicalentriesexistatthesamelocation,isolationmodesdonotaffectaccesstothese entriesbecausetheapplicationalwaysinteractswithvirtualelements.
VMware, Inc.
69
Examples
YoucanmodifytheRegistryIsolationModeparametertoensurethattheapplicationcanreadkeysfromthe hostcomputer,butnotwritetothehostcomputer.
[Isolation] RegistryIsolationMode=WriteCopy
Youcanensurethattheapplicationcanwritetoanykeyonthecomputer,exceptwherethepackagespecifies otherwise.
[Isolation] RegistryIsolationMode=Merged
FileTypes
TheFileTypesparameterlistsfileextensionsthatthethinreg.exeutilityassociateswithanexecutablefile. Thecaptureprocessgeneratesinitialvaluesthatyoucannotaddto.Youcanremoveextensionsthatyoudo notwanttoassociatewiththevirtualpackage.Donotuseseparatorsbetweenthefileextensionsinthelist.
Examples
AMicrosoftWord2007packagespecifies.doc.docxasthevaluesoftheFileTypesparameter.Ifyoucapture Microsoft Office2007andhaveMicrosoftOffice2003installedinthephysicalenvironment,youcanremove the.docextensionfromtheFileTypesparameterandleavethe.docxextensiontoensurethat Microsoft Word2003opens.docfilesandMicrosoftWord2007opens.docxfiles.
[Microsoft Office Word 2007.exe] FileTypes=.docx
Protocols
TheProtocolsparameterspecifiestheprotocols,suchasHTTP,thatarevisibletoapplicationsinthephysical environment.ThisparameterissimilartotheFileTypesparameter,butdealswithapplicationsthathandle protocolsratherthanfiletypes. Thecaptureprocessgeneratesinitialvaluesthatyoucannotaddto.Youcanremoveentriesforbrowsersor otherapplications.
Examples
Thecaptureprocesscanspecifyprotocols,suchasthemailtoprotocolforaMicrosoftOutlookpackage,inthe Protocolsparameter.
[Microsoft Office Outlook 2007.exe] Protocols=feed;feeds;mailto;Outlook.URL.mailto;stssync;webcal;webcals
70
VMware, Inc.
ExcludePattern
TheExcludePatternparameterexcludesfilesordirectoriesduringtheapplicationbuildprocess.Youmust adda[FileList]headingbeforethisparameterentry. Youcanuseacommatoseparatepatternsinthelist.Wildcards (*)matchnoneofthecharactersoratleastone ofthecharactersandquestionmarks (?)matchexactlyonecharacter.ThesyntaxissimilartotheDOSdir command,butyoucanapplywildcardcharacterstodirectorynamesandfilenames. YoucanspecifytheExcludePatternparameterinthePackage.inifile,wherethepatternexclusionapplies totheentiredirectorystructure,andthe##Attributes.inifile,whereThinAppaddsthepatternexclusion tothecurrentlistofexclusions,butappliessettingsonlytothespecificdirectoryandsubdirectories.Youcan createadifferentexclusionlistfordifferentdirectoriesinyourproject.
Examples
Ifyoustorepackagesinaversioncontrolsystemandyouwanttoexcludeversioncontrolinformationfrom thevirtualfilesystem,youcanexcludeanydirectoriescalled.svnor.cvsandallthesubdirectories.
[FileList] ExcludePattern=\.svn,\.cvs
Thepatterndoesnotmatchfilenamesordirectoriesthatcontain.svnor.cvsinthemiddleofthestring. Youcanexcludeanypaththatendswith.bakor.msi.
[FileList] ExcludePattern=*.bak,*.msi
Icon
TheIconparameterspecifiestheiconfiletoassociatewiththegeneratedexecutablefile.Thisiconappearsin theapplication,suchasMicrosoftWord,andinthefilesassociatedwiththeapplication,suchas.docfiles. Eachapplicationincludesitsowniconstoredasa.icofile,withinthe.exefileoftheapplication,orwithin a.dllfile.Thecaptureprocessattachestheiconstotheexecutablefiles.Theapplicationusesthemaingroup iconfromtheexecutablefileintheSourceparameterandtheindividualiconresourcethatthegroupicon pointsto.
Examples
YoucanmodifytheIconparametertouseanalternativeiconbyspecifyinganexecutablefilethatisdifferent fromtheexecutablefileintheSourceparameter.Alternativeiconsmightbeusefulforthirdpartycompanies.
[<my_app>.exe] Source=%ProgramFilesDir%\<my_app>\app.exe Icon=%ProgramFilesDir%\<my_app>\app2.exe
Youcanspecifyaniconsetbyappending,1 ,2totheendoftheiconpath.
[<my_app>.exe] Source=%ProgramFilesDir%\<my_app>\<app>.exe Icon=%ProgramFilesDir%\<my_app>\<app2>.exe,1
Youcanusea.ico filetospecifytheapplicationicon.
[<my_app>.exe] Source=%ProgramFilesDir%\<my_app>\<app>.exe Icon=%ProgramFilesDir%\<my_app>\<my_icon>.ico
VMware, Inc.
71
OutDir
TheOutDirparameterspecifiesthedirectorythatstoresthebuild.batoutput. Donotmodifythevalueofthisparameter.
Examples
ThestaticvalueoftheOutDirparameterspecifiesthebindirectoryoftheproject.
[BuildOptions] OutDir=bin
RetainAllIcons
TheRetainAllIconsparameterkeepsalloftheoriginaliconsoftheexecutablefilelistedintheSource parameterintheapplication. Theiconsthatarenotassignedtoapplicationexecutablefilesresideinthevirtualfilesystemofthepackage. TheRetainAllIconsparameterdetermineswhethertocopytheunusediconsfromthevirtualfilesystemto theexecutablefile.Tosavediskspace,ThinAppsetsaninitialvaluethatremovesunusediconsfromthe portionoftheexecutablefilethatisvisibletothephysicalenvironment.
Examples
YoucanmodifytheRetainAllIconsparametertokeepalloftheoriginaliconsoftheapplication.
[app.exe] Source=%ProgramFilesDir%\myapp\app.exe RetainAllIcons=1
Configuring Permissions
YoucanmodifyThinAppparametersforsecuritytasksthatdefineuseraccesstopackagesandchangeData ExecutionPrevention(DEP)protection.
AccessDeniedMsg
TheAccessDeniedMsgparametercontainsanerrormessagetodisplaytouserswhodonothavepermission torunapackage. ThinAppsetsaninitialmessagethatnotifiestheusertocontacttheadministrator.
Examples
YoucanmodifytheAccessDeniedMsgparametertoaddatechnicalsupportnumber.
[BuildOptions] PermittedGroups=Administrator;OfficeUsers AccessDeniedMsg=You do not have permission to execute this application, please call support @ 1-800-822-2992
AddPageExecutePermission
TheAddPageExecutePermissionparametersupportsapplicationsthatdonotworkinaDataExecution Prevention(DEP)environment. TheDEPfeatureofWindowsXP SP2,WindowsServer 2003,andlateroperatingsystemversionsprotects againstsomesecurityexploitsthatoccurwithbufferoverflow.This featurecreatescompatibilityissues. WindowsturnsoffthefeaturebydefaultonWindowsXP SP2andyoucanuseamachinespecificoptinor optoutlistoftheapplicationstowhichtoapplyDEPprotection.Optinandoptoutpoliciescanbedifficult tomanagewhenalargenumberofmachinesandapplicationsareinvolved.TheAddPageExecutePermission parameterinstructsThinApptoaddexecutionpermissiontopagesthatanapplicationallocates.The applicationcanrunonmachinesthathaveDEPprotectionenabledwithoutmodifyingtheoptoutlist. ThinAppsetsaninitialvalueoftheAddPageExecutePermissionparameterthatpreventsanychangetothe DEPprotections.
72 VMware, Inc.
Examples
YoucanmodifytheAddPageExecutePermissionparametertoaddexecutionpermissiontopagesthatan applicationallocates.ThinAppexecutescodefrommemorypagesthattheapplicationspecifies.Thisisuseful forapplicationsthatcombinetheprogramanditsdataintooneareaofmemory.
[BuildOptions] ;Disable some Data Execution protections for this particular application AddPageExecutionPermission=1
PermittedGroups
ThePermittedGroupsparameterrestrictsapackagetoaspecificsetofActiveDirectoryusers. Youcanspecifygroupnames,SIDstrings,oramixofgroupnamesandSIDstringsinthesamelineofthe PermittedGroupsparameter.Ifyouuseadomainbasedgroupname,youmustconnecttothatdomainwhen youbuildtheapplicationpackage.IfyouaddaSIDintheparametervalue,youarenotrequiredtoconnectto thedomainwheretheSIDisdefined. ActiveDirectoryDomainServicesdefinesecuritygroupsanddistributiongroups.Thisparametercanonly supportnestedsecuritygroups.Forexample,ifauserisamemberofsecuritygroupA,andsecuritygroupA isamemberofsecuritygroupB,ThinAppcandetecttheuserasamemberofsecuritygroupAandsecurity groupB. WhenThinAppbuildsanapplication,ThinAppassumesanyspecifiedgroupnamesarevalidandconverts thenamestoSIDvalues.ThinAppcanresolvegroupownershipatruntimeusingcachedcredentials.Youcan continuetoauthenticatelaptopusersevenwhentheyareoffline.Iftheuserdoesnothaveaccesstorunthe package,youcancustomizetheAccessDeniedMsgparametertoinstructtheuser. YoucanplacethePermittedGroupsparameterunderthe[BuildOptions]headingtoaffectthepackageor underthe[<application>.exe]headingtoaffectaspecificapplication.The[<application>.exe]value overridesthedefault[BuildOptions]valueforthespecificapplication.
Examples
YoucanmodifythePermittedGroupsparametertospecifyalistofActiveDirectoryusergroupnames, separatedbysemicolons.The[BuildOptions]parameterssetglobalsettingsfortheentireproject.
[BuildOptions] PermittedGroups=Administrator;OfficeUsers AccessDeniedMsg=You do not have permission to execute this application, please call support @ 1-800-822-2992
YoucanspecifyausergroupsettingforaspecificapplicationthatoverwritestheglobalPermittedGroups setting.
[App1.exe] PermittedGroups=Guest AccessDeniedMsg=You do not have permission to execute this application, please call support @ 1-800-822-2992
IfyoudonotspecifyaPermittedGroupssettingforanapplication,theapplicationinheritstheglobal PermittedGroupsvalueinthe[BuildOptions]section.
[App2.exe] ...
YoucanmixgroupnamesandSIDstringsinthesameentryforthePermittedGroupsparameter.
PermittedGroups=S-1-5-32-544;Office Users
VMware, Inc.
73
UACRequestedPrivilegesLevel
TheUACRequestedPrivilegesLevelparameterspecifiesprivilegesforprogramsrequiringUserAccount Control(UAC)information.ThisparameteraffectsusersworkingonWindowsVistaorlateroperatingsystem versions. Youcanusethefollowingvaluestospecifyprivileges:
asInvoker ThisvalueusestheprofileinVista.
Ifyoudonotspecifyprivileges,ThinAppdoesnotassignadefaultvaluebutoperatesaccordingtothe asInvokersetting.
Examples
YoucanmodifytheUACRequestedPrivilegesLevelparametertospecifyadministratorprivilegesfora program.
[BuildOptions] UACRequestedPrivilegesLevel=requireAdministrator
UACRequestedPrivilegesUIAccess
TheUACRequestedPrivilegesUIAccessparameterspecifiesuserinterfaceaccessonWindowsVistaorlater operatingsystemversions.Theseoperatingsystemsprotectsomeelementsoftheuserinterface. ThinAppassignsaninitialvalueoftheUACRequestedPrivilegesUIAccessparametertoblockapplication accesstoprotectedelements.Althoughyoucanassignatrueorfalsevaluetothe UACRequestedPrivilegesUIAccessparametertospecifyuserinterfaceaccess,theparameterexiststo supportMicrosoftsettings.
Examples
YoucankeeptheinitialvalueoftheUACRequestedPrivilegesUIAccessparametertoensurethatthevirtual applicationcannotaccessprotectedelements.
[BuildOptions] UACRequestedPrivilegesUiAccess=false
ExternalCOMObjects
TheExternalCOMObjectsparameterdetermineswhetherWindowscreatesandrunsCOMobjectsinthe physicalenvironmentratherthanthevirtualenvironmenttofacilitateapplicationcompatibilitywith ThinApp.COMobjectsthatareexternaltothevirtualenvironmentalwaysruninthephysicalenvironment. ThinAppsetsaninitialvalueoftheExternalCOMObjectsparameterthatcreatesandrunstheCOMobjects inthevirtualenvironment. COMsupportsoutofprocessexecutableserversandservicebasedCOMobjects.Ifanapplicationcancreate COMobjectsthatgeneratemodificationsonthehostcomputer,theintegrityofthehostcomputerisatrisk.If ThinApprunsoutofprocessandservicebasedCOMobjectsinthevirtualenvironment,ThinAppstoresin thesandboxallchangesthattheCOMobjectsmake. Thecaptureprocessdoesnotgeneratethisparameter.YoucanaddthisparametertothePackage.inifile.
74 VMware, Inc.
Examples
WhenyoutroubleshootaproblemwithVMwaresupportanddeterminethatanapplicationimplementsCOM objectsthatisnotcompatiblewithThinApp,youcanmodifytheExternalCOMObjectsparametertorunthe COMobjectsoutsideofthevirtualenvironment.YoucanlisttheCLSIDkeys.
[BuildOptions] ExternalCOMObjects={8BC3F05E-D86B-11D0-A075-00C04FB68820};{7D096C5F-AC08-4F1F-BEB7-5C22C517CE39}
ExternalDLLs
TheExternalDLLsparametercanforceWindowstoloadspecificDLLfilesfromthevirtualfilesystem. ThinAppsetsaninitialvaluethatloadsDLLfilesfromthevirtualfilesystemandpassestheloadingprocess toWindowsforDLLfilesonthephysicalfilesystem.In somecircumstances,WindowsmustloadaDLLfile inthevirtualfilesystem.YoumighthaveaDLLfilethatinsertsitselfintootherprocessesusingWindows hooks.TheDLLfilethatimplementsthehookmustbeavailableonthehostfilesystemandWindowsmust loadthatfile.WhenyouspecifyaDLLfileintheExternalDLLsparameter,ThinAppextractsthefilefromthe virtualfilesystemtothesandboxandinstructsWindowstoloadit. Virtualdictationsoftwareisatypeofsoftwarethatmightinterfacewithnativeapplicationsthatpass informationbetweenDLLs.ThinAppcanpasstheloadingofDLLsinthevirtualenvironmenttoWindowsto ensurethatlocalapplicationscaninterfacewiththeDLLs. TheExternalDLLsparameterdoesnotsupportaDLLfilethatdependsonotherDLLfilesinthevirtualfile system.Inthiscase,WindowscannotloadtheDLLfile.
Examples
YoucanmodifytheExternalDLLsparametertoforceWindowstoloadtheinject.dllandinjectme2.dll filesfromthevirtualfilesystem.
[BuildOptions] ExternalDLLs=inject.dll;injectme2.dll
ForcedVirtualLoadPaths
TheForcedVirtualLoadPathsparameterinstructsThinApptoloadDLLfilesasvirtualDLLfilesevenifthe filesresideoutsidethepackage.ThisparameterisusefulwhentheapplicationmustloadexternalsystemDLL filesthatdependonDLLfileslocatedinthepackage. TheDLLpathscancontainmacros.Usesemicolonstoseparatemultiplepaths. ThisparameterachievesthesameresultastheAddForcedVirtualLoadPathAPIfunction.See AddForcedVirtualLoadPathonpage 119.
Examples
YoucanmodifytheForcedVirtualLoadPathsparameterwhenyouhaveanapplicationthatdependson externalDLLfiles.WhenyoucaptureMicrosoftOfficewithoutMicrosoftOutlookandanativeversionof MicrosoftOutlookexistsonthelocalsystem,youcannotsendemailfromthevirtualversionofMicrosoftExcel becausethenativeenvelope.dllfilethatisinstalledwithMicrosoftOutlookdependsonthemso.dllfile thatThinApploadsinthevirtualenvironment.YoucanforceThinApptoloadtheenvelope.dllfileinthe virtualenvironmentinsteadofinthenativeenvironment.
[BuildOptions] ForcedVirtualLoadPaths=%ProgramFilesDir%\Microsoft Office\Office10\envelope.dll
VMware, Inc.
75
IsolatedMemoryObjects
TheIsolatedMemoryObjectsparameterliststhesharedmemoryobjectstoisolatefromotherapplicationsor fromsystemobjects. ApplicationsthatuseCreateFileMappingandOpenFileMappingWindowsfunctionscreatesharedmemory objects.Whenyoudonotisolatememoryobjects,conflictscanoccurbetweenvirtualapplicationsandnative applicationssharingthoseobjects.Forexample,youmighthaveatwoversionsofanapplicationwithone versioninthenativeenvironmentandoneversioninthevirtualenvironment.Whentheseapplication versionsuseinformationinthesamememoryobject,theapplicationscaninterferewitheachotherandfail. Youmightwanttoisolatesharedmemoryobjectstoensurethatvirtualapplicationsandsystemobjectscannot detecteachother. TheIsolatedMemoryObjectsparameterdoesnotappearinthePackage.inifilebutyoucanaddthe parameter.ThinAppsetsaninitialvaluethatisolatesthememoryobjectsthatanativeversionofInternet Explorerusesinthevirtualenvironment.Thevalueaddressesa conflictbetweentheexplorer.exeand iexplore.exeutilitieswhentheutilitiesmapsandboxfiles.YoucanusetheIsolatedMemoryObjects parametertoisolateadditionalnamedsharedmemoryobjectstoensurethattheobjectsarevisibleonlytoother virtualapplicationsusingthesamesandbox. TheIsolatedMemoryObjectsparameteracceptsalistofentriesthatareseparatedbythesemicolon(;). Each entrycancontainasterisk(*) andquestionmark(?)wildcardcharacterstomatchvariablepatterns.
Examples
YoucanmodifytheIsolatedMemoryObjectsparametertoisolatethememoryobjectwiththeMy Shared Objectnameandanymemoryobjectwithoutlookinthename.
[BuildOptions] IsolatedMemoryObjects=*outlook*;My Shared Object
IsolatedSynchronizationObjects
TheIsolatedSynchronizationObjectsparameterliststhesynchronizationobjectstoisolatefromother applications. Synchronizationobjectscoordinateactionsbetweenapplications.ThefollowingWindowssynchronization objectsmightappearinlogsforapplicationerrors:
Iftheseobjectsappearinlogfiles,youmightisolatetheobjectsinthevirtualenvironmenttoavoidacollision withsynchronizationobjectsthatnativeapplicationscreate.Youcanisolatesynchronizationobjectsfrom applicationsthatdonotruninthesamevirtualnamespace.If twoapplicationssharethesamesandboxpath, theapplicationshavethesamenamespaceforisolatedsynchronizationobjects.Iftwoapplicationshavethe samesandboxnamebutdifferentsandboxpaths,theapplicationshaveseparatenamespaces. TheIsolatedSynchronizationObjectsparameterdoesnotappearinthePackage.inifilebutyoucan addtheparameter.ThinAppsetsaninitialvaluethatmakessynchronizationobjectsaccessibletoother applications.Virtualapplicationswithdifferentsandboxescandetectthesynchronizationobjects. TheIsolatedSynchronizationObjectsparameteracceptsalistofentriesthatareseparatedbythesemicolon(;). Eachentrycanusetheasterisk(*) andquestionmark(?)aswildcardcharacterstomatchvariablepatterns.
76
VMware, Inc.
Examples
YoucanmodifytheIsolatedSynchronizationObjectsparametertoisolatethesynchronizationobjectwith theMy Shared Objectnameandthesynchronizationobjectwithoutlookinthename.
[BuildOptions] IsolatedSynchronizationObjects=*outlook*;My Shared Object
NotificationDLLs
TheNotificationDLLsparametermakescallstothirdpartyDLLfilestoprovidenotificationofevents,such asapplicationstartuporshutdown.TheDLLscanresideonthephysicalfilesystemorthevirtualpackage. If ThinAppcannotloadaDLLfile,thepackagegenerateserrors. ThisparameterdoesnotappearinthePackage.inifile.ThinAppSDKuserscanaddthisparametertothefile.
Examples
YoucanmodifytheNotificationDLLsparametertomakecallstotheFirst.dllandSecond.dllfiles.
[BuildOptions] NotificationDLLs=First.dll;Second.dll
NotificationDLLSignature
TheNotificationDLLSignatureparameterworkswiththeNotificationDLLsparameterandverifiesthat aspecifiedDLLfilehasasignature.IftheDLLdoesnothaveasignature,ThinAppdoesnotloadthefile.
Example
YoucanmodifytheNotificationDLLSignatureparameterwithanasterisk(*)toensurethattheDLLfileis authenticodesigned.
[BuildOptions] NotificationDLLSignature=*
YoucansetanentitytoensurethattheDLLissignedbythatentity.
[BuildOptions] NotificationDLLSignature=VMware, Inc.
ObjectTypes
TheObjectTypesparameterspecifiesalistofvirtualCOMobjecttypesthatarevisibletootherapplicationsin thephysicalenvironment.Youcanusescripts,suchasVBScripts,tocallobjectsthatstartcapturedapplications. Anobjecttypeisregisteredtoonlyonenativeorvirtualapplicationatatime.IfyouinstallOffice2003onthe nativemachineandwanttouseavirtualOffice2007package,youmustdeterminewhethertohavethevirtual ornativeapplicationhandletheobjecttypes. IfyouwantthevirtualOffice2007tohandletheobjecttypes,youcanleavetheObjectTypessettinginthe Package.inifile,buildthepackage,andregisteritusingthethinreg.exeutility.Ifyouwantthenative Office2003tohandletheobjecttypes,youmustremovetheObjectTypessettingfromthePackage.inifile beforebuildingandregisteringthepackage.YoucannotaddrandomentriestotheObjectTypesparameter. Youcanonlyremoveentriesgeneratedbythecaptureprocess.
Examples
IfascriptoranativeapplicationcreatesanExcel.ApplicationCOMobjectorotherCOMobjectslistedin theObjectTypesparameter,ThinAppstartsthevirtualpackage.
[Microsoft Office Excel 2007.exe] ObjectTypes=Excel.Application;Excel.Application.12;Excel.Chart; Excel.Macrosheet;Excel.Sheet; Excel.Workspace
VMware, Inc.
77
SandboxCOMObjects
TheSandboxCOMObjectsparameterindicateswhetherapplicationsinthephysicalenvironmentcanaccess COMobjectsthatthevirtualapplicationregistersatruntime. ThinAppsetsaninitialvaluethatpreventsnativeapplicationsinthephysicalenvironmentfromaccessing COMobjectsthatthevirtualapplicationregisters.ThinAppplacesCOMobjectsthatthevirtualapplication registersinthesandbox.
Examples
YoucanmodifytheSandboxCOMObjectsparametertomakevisibletheCOMobjectsthatthevirtual applicationregistersoutsidethesandbox.Forexample,ifyouinstallnativeMicrosoftOffice2003andvirtual MicrosoftOffice2007,andyourunacustommailmergeprograminthenativeenvironmentthatstarts MicrosoftWordandinstructsittoopen,change,andsaveadocument,youcangenerateMicrosoftWord2007 documentswhenvirtualMicrosoftWordisrunning.ThenativeapplicationcanaccessCOMobjectsfromthe virtualapplication.
SandboxCOMObjects=0
VirtualizeExternalOutOfProcessCOM
TheVirtualizeExternalOutOfProcessCOMparametercontrolswhetheroutofprocessCOMobjectscan runinthevirtualenvironment.COMobjectsthatareexternaltothevirtualenvironmentalwaysruninthe physicalenvironment. ThisparameteraddressedoutofprocessCOMobjectsthatarenotpartofaThinApppackageandarenot registeredinthevirtualregistry.ThinAppsetsaninitialvalueoftheVirtualizeExternalOutOfProcessCOM parametertorunexternaloutofprocessCOMobjectsinthevirtualenvironmenttoensurethatCOMobjects cannotmodifythehostcomputer.IfacompatibilityproblemexistswithanexternalCOMobjectrunningin thevirtualenvironment,youcancreateandrunCOMobjectsonthehostsystem.TorunonlyspecificCOM objectsoutsideofthevirtualenvironment,youcanusetheExternalCOMObjectsparametertolisttheCLSID ofeachCOMobject.
Examples
YoucanmodifytheVirtualizeExternalOutOfProcessCOMparametertorunallexternaloutofprocess COMobjectsinthephysicalenvironmentratherthanthevirtualenvironment.Forexample,youmightuse virtualMicrosoftAccess2003tosendemailthroughanativeIBMLotusNotessession.
[BuildOptions] VirtualizeExternalOutOfProcessCOM=0
CachePath
TheCachePathparametersetsthedeploymentsystempathtoacachedirectoryforfontfilesandstub executablefiles. Becauseofthefrequentuseoffontandstubexecutablefiles,ThinAppmustextractfilesinthecachequickly andplacethemonthephysicaldisk.Ifyoudeletethecache,ThinAppcanreconstructthecache.
78
VMware, Inc.
Examples
YoucanmodifytheCachePathparametertouseanabsolutepath.
CachePath=C:\VirtCache
UpgradePath
TheUpgradePathparameterspecifiesthelocationofinformationandfilesforApplicationSyncand sidebysideintegerupdates. ThedefaultUpgradePathlocationisthesamedirectoryasthatinwhichtheapplicationexecutablefileis locatedonthelocalmachine. TheApplicationSyncutilityaccumulateslogandcachefilesandconstructstheupdatedexecutablefileinthe UpgradePathlocation.ForinformationabouttheApplicationSyncutility,seeApplicationSyncUpdateson page 53. SidebysideintegerupdatinglooksforupdatedversionsoftheapplicationintheUpgradePathlocation.For informationaboutsidebysideupgrading,seeSidebySideUpgradingofRunningApplicationsona NetworkShareonpage 63.
Examples
Whenthedefaultlocationhaslimitedspace,suchasaUSBdevice,oryouwanttoisolateupgradesfromthe applicationexecutablefile,youcanmodifytheUpgradePathparametertospecifyanalternativelocationfor storageofsidebysideupdates.Theparametercanincludeenvironmentvariablesinthepathbutdoesnot supportfoldermacros.
[BuildOptions] UpgradePath=C:\Program Files\<my_app_upgrades>
VMware, Inc.
79
VirtualDrives
TheVirtualDrivesparameterspecifiesadditionaldrivelettersthatareavailabletotheapplicationat runtime. ThinAppmakesthevirtualenvironmentresemblethephysicalcaptureenvironmentandmimicsthephysical drivesthatareavailableonthecapturesystem.ThinApprepresentsvirtualdrivesthroughthe VirtualDrivesparameterandaprojectfolder,suchas%drive_<drive_letter>%,thatcontainsthevirtual filesonthedrive.Thisprojectfoldercanresideinthereadonlyfilesystemofthepackageandinthesandbox whenwriteoperationscannotoccuronthephysicaldrive. TheVirtualDrivesparameterpresentsthedrivestotheapplicationatruntime.TheVirtualDrives parameterdisplaysmetadataaboutthedrive,suchasatheserialnumberandtypeofdrive.Forexample, ThinAppdetectsthephysicalC:driveonthecapturesystemandentersitintotheparameterasaFIXEDtype ofdrivewiththeserialnumber. TheVirtualDrivesparameterincludesthefollowinginformation:
FIXEDIndicatesfixedmedia. Forexample,aharddriveorinternalFlashdrive.
REMOVABLEIndicatesremovablemedia. Forexample,adiskdrive,thumbdrive,orflashcardreader.
CDROMIndicatesaCDROMdrive. RAMDISKIndicatesaRAMdisk.
80
VMware, Inc.
Placethe##Attributes.inifileinthe%Drive_<letter>%directory.
Examples
TheVirtualDrivesparameterisasinglestringthatcanholdinformationaboutmultipledriveletters,and optionalparametersforthosedriveletters.Theparameterusessemicolonstoseparateinformationassigned todifferentdrivelettersandcommastoseparateparametersforindividualdriveletters.ThinAppassignsa serialnumberandtheFIXEDtypetothedrive.
[BuildOptions] VirtualDrives= Drive=A, Serial=12345678, Type=REMOVABLE; Drive=B, Serial=9ABCDEF0, Type=FIXED
YoucanspecifytheX,D,andZvirtualdriveletters.
[BuildOptions] VirtualDrives=Drive=X, Serial=ff897828, Type=REMOVABLE; Drive=D, Type=CDROM; Drive=Z
AllowExternalKernelModeServices
TheAllowExternalKernelModeServicesparametercontrolswhetherapplicationscancreateandrun nativekerneldriverservices.Theserviceexecutablefilemustexistonthephysicalfilesystem. ThinAppdoesnotdisplaythedefaultparameterinthePackage.inifilebutassignsaninitialvaluethat preventstheapplicationfromstartinganativeWindowskerneldriverservice.
Examples
YoucanaddtheAllowExternalKernelModeServicesparametertothePackage.inifileandmodifythe defaultvalueof0to1toallowtheapplicationtocreateoropenanativeWindowskerneldriverservice.
[BuildOptions] AllowExternalKernelModeServices=1
AllowExternalProcessModifications
TheAllowExternalProcessModificationsparameterdetermineswhethercapturedapplicationscanwrite toanativeprocess.Somevirtualizedapplicationsrequireamethodtointeractwithnativeapplications. ThinAppblocksanyattemptbythecapturedapplicationtoinjectitselfintoanativeapplication.Thecaptured applicationcanstillinjectitselfintovirtualapplicationsrunninginthesamesandbox.ThinAppdoesnot displaythedefaultparameterinthePackage.inifile.
VMware, Inc.
81
WhenThinAppblocksacapturedapplicationfrominjectingitselfintoanativeapplication,LogMonitor generatestracelogsthatrefertotheAllowExternalProcessModificationsparameter.
Examples
YoucanaddtheAllowExternalProcessModificationsparametertothePackage.inifiletosupportwrite operationsfromvirtualprocessestonativeprocesses.Forexample,aspeechrecognitionapplicationmust injectitselfintonativeapplicationstovoicethetext.
[BuildOptions] AllowExternalProcessModifications=1
AllowUnsupportedExternalChildProcesses
TheAllowUnsupportedExternalChildProcessesparameterspecifieswhethertorun64bitchildprocesses inthephysicalenvironment.ThinAppruns64bitapplicationsinthephysicalenvironmentbecauseThinApp doesnotsupport64bitprocessesandcannotvirtualizea64bitapplication. ThinAppsetsaninitialvalueoftheAllowUnsupportedExternalChildProcessesparameterthatruns64bit applicationsinthephysicalenvironment.Youcanrun64bitchildprocesstasksonapplicationsthatrunon 64bitsystems.Runningtheprintspoolerisanexampleofa64bitchildprocesstask.
Examples
Toprotectthephysicalfilesystemfromanychanges,youcanmodifythe AllowUnsupportedExternalChildProcessesparameterandblockThinAppfromgenerating64bitchild processesoutsideofthevirtualenvironment.ThinAppcannotrunany64bitprocessesbecauseThinAppdoes notsupporttheprocessesinthevirtualenvironment.
[BuildOptions] AllowUnsupportedExternalChildProcesses=0
AutoShutdownServices
TheAutoShutdownServicesparametercontrolswhethertoshutdownvirtualserviceswhenthelast nonserviceprocessexits. ThinAppsetsaninitialvaluetostopvirtualserviceswhenthelastnonserviceprocessexits.Theparameter doesnotaffectservicesoutsidethevirtualcontext.
Examples
YoucanmodifytheAutoShutdownServicesparameterwhenyourunApacheWebServerandwanttokeep thevirtualservicerunningaftertheapplicationthatstartstheserviceexits.
[BuildOptions] AutoShutdownServices=0
AutoStartServices
TheAutoStartServicesparametercontrolswhethertostartthevirtualserviceswhenthefirstvirtual applicationstarts. ThinAppsetsaninitialvaluethatstartsthevirtualservicesthatareinstalledwiththestartuptypeof Automatic.Thevirtualservicesstartwhentheuserrunsthefirstparentprocess.
Examples
Whenapplicationsinstallaservicebutdonotuseit,you canmodifytheAutoStartServicesparameterto preventthestartofthevirtualserviceandsavetime.
[BuildOptions] AutoStartServices=0
82
VMware, Inc.
ChildProcessEnvironmentDefault
TheChildProcessEnvironmentDefaultparameterdetermineswhetherThinApprunsallchildprocessesin thevirtualenvironment. ThinAppcreatesallchildprocessesinthevirtualenvironment.Iftheprocessesareslow,youmightwantto movechildprocessestothephysicalenvironment.Asachildprocess,MicrosoftOutlookmightaffect performancewhenitcopiesthewholemailboxtothevirtualenvironment. YoucancreatespecificexceptionswiththeChildProcessEnvironmentExceptionsparameter. See ChildProcessEnvironmentExceptionsonpage 83.
Examples
Ifyoudonotwantthechildprocesstooperateinorslowdownthevirtualenvironment,youcanmodifythe ChildProcessEnvironmentDefaultparametertocreatechildprocessesinthephysicalenvironment.
[BuildOptions] ChildProcessEnvironmentDefault=External
ChildProcessEnvironmentExceptions
TheChildProcessEnvironmentExceptionsparameternotesexceptionstothe ChildProcessEnvironmentDefaultparameterwhenyouwanttospecifychildprocesses. WhenyousettheChildProcessEnvironmentDefaultparametertoVirtual,the ChildProcessEnvironmentExceptionsparameterliststheapplicationsthatrunoutsideofthevirtual environment.WhenyousettheChildProcessEnvironmentDefaultparametertoExternal,the ChildProcessEnvironmentExceptionsparameterliststheapplicationsthatruninthevirtualenvironment.
Examples
Youcanspecifyexceptionstorunningchildprocessesinthevirtualenvironment.Whenthevirtualapplication startsanotepad.exechildprocess,thechildprocessrunsoutsidethevirtualenvironment.
[BuildOptions] ChildProcessEnvironmentExceptions=AcroRd.exe;notepad.exe ChildProcessEnvironmentDefault=Virtual
Configuring Sizes
YoucanmodifyThinAppparameterstocompressfileandblocksizesforapplications.
BlockSize
TheBlockSizeparametercontrolsthesizeofcompressionblocksonlywhenThinAppcompressesfilesfora build. Alargerblocksizecanachievehighercompression.Largerblocksizesmightslowtheperformancebecause ofthefollowingreasons:
YoucanspecifytheBlockSizeparameterinthePackage.inifileandinthe##Attributes.inifile.Youcan usedifferentblocksizesfordifferentdirectorieswithinasingleproject.
VMware, Inc.
83
Examples
Youcanincreasethedefaultsizeof64KBintheBlockSizeparametertoasupportedblocksizeof128KB, 256KB,512KB,or1MB.Youcanaddkafterthenumbertoindicatekilobytesormtoindicatemegabytes.
[Compression] BlockSize=128k
CompressionType
TheCompressionTypeparametercancompressallfilesinapackageexceptforPortableExecutablefiles. Youcancompressfileswhenyouhavealargepackageanddiskspaceisatoppriority.Compressionhasa quickrateofdecompressionandlittleeffectonmostapplicationstartuptimesandmemoryconsumptionat runtime.CompressionachievessimilarcompressionratiosastheZIPalgorithm. Table 51listssamplecompressionratiosandstartuptimesforaMicrosoft Office 2003packagethatrunsfrom alocalharddrive. Table 5-1. Sample Compression Ratios and Startup Times
Compression Type Size Compressionratio Startuptime(firstrun) Startuptime(secondrun) Buildtime(firstbuild) Buildtime(secondbuild) None 448,616KB 100% 6seconds 0.1seconds 3minutes 2minutes Fast 257,373KB 57% 6seconds 1seconds 19minutes 1.2minutes
Examples
ThinAppsetsdefaultvaluesfortheOptimizeForparameterandtheCompressionTypeparameterthatwork togethertoachievemaximummemoryperformanceandstartuptime.ThinAppstoresalldatain uncompressedformat.
[Compression] CompressionType=None [BuildOptions] OptimizeFor=Memory
Youcanusethisconfigurationwhendiskspaceismoderatelyimportant.Thinappstoresexecutablefilesin uncompressedformatbutcompressesalltheotherdata.
[Compression] CompressionType=Fast [BuildOptions] OptimizeFor=Memory
Youcanusethisconfigurationwhendiskspaceisthetoppriority.ThinAppcompressesallfiles.
[Compression] CompressionType=Fast [BuildOptions] OptimizeFor=Disk
84
VMware, Inc.
MSICompressionType
TheMSICompressionTypeparameterdetermineswhethertocompressMSIfilesforpackagedistribution. CompressionimprovesperformancewhenopeningMSIfilesandusingtheThinAppSDK. IfyoucreateanMSIfileduringthecaptureprocess,ThinAppaddstheMSICompressionTypeparameterto thePackage.inifileandsetstheinitialvalueofFasttocompressthefile.Decompressionoccursatthetime ofinstallation. YoudonothavetosettheMSICompressionTypeparametertoFastwhenyousettheCompressionType parametertoFast.Settingbothparametersdoesnotincreasetheamountofcompression.
Examples
Ifyouareworkingwithlargebuildsandperformanceisnotapriority,youcanmodifythe MSICompressionTypeparametertopreventMSIfilecompression.
[Compression] MSICompressionType=none
OptimizeFor
TheOptimizeForparametercontrolswhethertocompressexecutablefilesortoreducememoryconsumption andpagefileusageontheharddrivetoimprovestartupperformance.Youcanusethisparameterwiththe CompressionTypeparametertocustomizethepackagesize,memoryallocation,andapplicationstartuptime. VMwarerecommendsleavingthedefaultsettingoftheOptimizeForparameterandtheCompressionType parametertoimprovestartupperformanceandmemoryconsumption.Youcanchangetheparameterstofavor smallerpackagesizeswhendisksizeisthepriorityconcern.ThinAppcompressesexecutablefilesonlywhen yousettheOptimizeForparametertoDiskandtheCompressionTypeparameterisFast.Executablefiles storedincompressedformatinsideapackagecanadverselyaffectperformanceandmemoryconsumption. WhenThinApploadsexecutablefilesfromcompressedformat,ThinAppcannotsharethefilememoryacross similarsuitesofapplicationsorwithotherusersinamultiuserenvironmentsuchasTerminalServer. WhenyouwanttocompressallthepackagefilesexceptforPortableExecutablefiles,youcanleavethedefault OptimizeForparameterandonlysettheCompressionTypeparameterisFast.Whenyouwanttocompress onlyMSIfiles,usetheMSICompressionTypeparameter.
Examples
VMwarerecommendsthedefaultconfigurationoftheOptimizeForparameterandtheCompressionType parametertomaximizeperformance.ThinAppstoresalldatainuncompressedformat.TheOptimizeFor parametercanbeineithertheCompressionsectionortheBuildOptionssectionofthe Package.inifile.
[Compression] CompressionType=None [BuildOptions] OptimizeFor=Memory
VMwarerecommendsthisconfigurationwhendiskspaceismoderatelyimportant.Thinappstoresexecutable filesinuncompressedformatbutcompressesalltheotherdata.
[Compression] CompressionType=Fast [BuildOptions] OptimizeFor=Memory
VMwarerecommendsthisconfigurationwhendiskspaceisthetoppriority.ThinAppcompressesallfiles.
[Compression] CompressionType=Fast [BuildOptions] OptimizeFor=Disk
VMware, Inc.
85
Configuring Logging
YoucanmodifyThinAppparameterstopreventloggingactivityorcustomizethelocationofthelogfiles.
DisableTracing
TheDisableTracingparameterprevents.tracefilegenerationwhenyourunLogMonitorforsecurityand resourcepurposes. Youmightblockstandard.tracefilegenerationtohidetheapplicationhistoryfromauser.Inatesting environment,youmightturnofftracingforapplicationsthatyouknowworkproperly.Producingextra .tracefileswastesdiskspaceandCPUtime.
Examples
YoucansettheDisableTracingparametertopreventthegenerationof.tracefilesinLogMonitor.
[BuildOptions] DisableTracing=1
LogPath
TheLogPathparametersetsthelocationtostore.tracefilesduringloggingactivity. Thedefaultlocationisthesamedirectorythatstorestheapplicationexecutablefile.Youmightchangethe defaultlocationtofindadirectorywithmorespaceortoredirectthelogsfromaUSBdevicetotheclient computer.UnlikemostpathsinThinApp,thelogpathcannotcontainmacrossuchas%AppData%or%Temp%.
Examples
YoucansettheLogPathparametertostorelogfilesinC:\ThinappLogs.
[BuildOptions] LogPath=C:\ThinappLogs
Configuring Versions
ThinAppparametersprovideinformationabouttheversionsofapplicationexecutablefilesandThinApp.
CapturedUsingVersion
TheCapturedUsingVersionparameterdisplaystheversionofThinAppforthecaptureprocessand determinesthefilesystemmacrosthatThinAppmustexpand. DonotmodifyordeletethisparameterfromthePackage.inifile.ThinAppusesthisparameterforbackward compatibilityandtechnicalsupport.
Examples
TheCapturedUsingVersionparametermightdisplayThinAppversion4.0.02200.
[BuildOptions] CapturedUsingVersion=4.0.0-2200
StripVersionInfo
TheStripVersionInfoparameterdetermineswhethertoremoveallversioninformationfromthesource executablefilewhenThinAppbuildstheapplication.ThesourceexecutablefileisthefilelistedintheSource parameter. VersioninformationforexecutablefilesappearsinWindowsproperties.Propertiesinformationincludesthe copyright,trademark,andversionnumber.TheStripVersionInfoparametercanremovetheVersiontabof Windowsproperties.
86
VMware, Inc.
ThinAppsetsaninitialvalueoftheStripVersionInfoparameterthatcopiesallversioninformationfrom thesourceexecutablefile.
Examples
Inrarecases,youcanmodifytheStripVersionInfoparametertogenerateanapplicationwithoutversion information.Forexample,youmightwanttocircumventversiondetectionscansthatcompareversions againstadatabaseofoutdatedsoftware.
[app.exe] Source=%ProgramFilesDir%\myapp\app.exe StripVersionInfo=1
Version.XXXX
TheVersion.XXXXparameteroverridesapplicationversionstringsoraddsnewversionstringsintheVersion tabofWindowsproperties. Thecaptureprocessdoesnotgeneratethisparameter.YoucanaddthisparametertothePackage.inifile.
Examples
YoucansetanewproductnamewiththeVersion.XXXXparameter.YoumightwantThinApp Officerather thanOfficeastheproductname.UsetheVersion.<string_name>=<string_value>format.
[<app>.exe] Version.ProductName=ThinApp Office Version.Description=This Product is great!
Configuring Locales
YoucanuseThinAppparameterstoverifylocaleinformation.
AnsiCodePage
TheAnsiCodePageparameterdisplaysanumericalvaluethatrepresentsthelanguageoftheoperatingsystem onwhichyoucapturetheapplication.ThinAppusesthevaluetomanagemultibytestrings. Thisparameterdoesnotperformlanguagetranslation.Thevaluethataffectsthedisplayoftextstringsand useofthestringswithintheapplication.
Examples
Whentheoperatingsystemsofthedeployandcapturecomputershavedifferentlanguages,youmightcheck theAnsiCodePageparameter.
[BuildOptions] AnsiCodePage=1252
LocaleIdentifier
TheLocaleIdentifierparameterdisplaysanumericIDforthelocalethataffectslayoutandformatting. The valuelocatesthecorrectlanguageresourcesfromtheapplication. ThinApprunspackagesaccordingtotheregionalandlanguagesettingsofthecapturesystemratherthanthe settingsofthesystemthatrunspackages.Ifyoucaptureanapplicationthatrequiresalocaleformat,suchas adateformat,onasystemthatdoesnothavetherequiredformat,youcancommentoutthisparameterto ensurethattheapplicationcanrunonasystemthathasthesupportedformat.
VMware, Inc.
87
Examples
WhentheregionallanguageoftheoperatingsystemisU.S.English,thecaptureprocesssetsthe LocaleIdentifierparameterto1033.
[BuildOptions] LocaleIdentifier=1033
LocaleName
TheLocaleNameparameterdisplaysthenameofthelocalewhenyoucaptureanapplicationon Microsoft Vista.
Examples
TheLocaleNameparametercandisplayaJapaneselocalename.
[BuildOptions] LocaleName=ja-JP
CommandLine
TheCommandLineparameterspecifiesthecommandlineargumentsthatstartashortcutexecutablefile.While theSourceparameterspecifiesthepathtotheshortcutexecutablefile,theCommandLineparameterspecifies thefilewiththerequiredoptionsorparameterstostartit. IftheStartmenushortcutfortheapplicationhascommandlineoptions,thecaptureprocesssetstheinitial valueoftheCommandLineparameterbasedonthoseoptions.Inraretroubleshootingcaseswithtechnical support,youmightalterthisparameter. Theoptionsandparametersfollowthebaseapplicationname.Dependingontheapplication,use/or-before theoptionorparameter.Usefoldermacrosforthepathnameconventions.
Examples
YoucanmodifytheCommandLineparameterwithanentrybasedonthe C:\Program Files\Mozilla Firefox\firefox.exe" -safe-modeStartmenushortcut.
CommandLine="C:\Program Files\Mozilla Firefox\firefox.exe" -safe-mode
Commandlineargumentscanusethe/<option> <parameter>format.
[<app>.exe] Source=%ProgramFilesDir%\<base_app>\<app>.exe Shortcut=<primary_data_container>.exe CommandLine="%ProgramFilesDir%\<base_app>\<app>.exe" /<option> <parameter>
Disabled
TheDisabledparameterdetermineswhethertheapplicationbuildtargetisonlyaplaceholderandprevents ThinAppfromgeneratingtheexecutablefileinthe/bindirectory. ThinAppenablesentrypointswhentheapplicationinstallerhasshortcutsonthedesktopandintheStart menu.WhenyoudonotselectanentrypointthatappearsintheSetupCapturewizard,ThinAppsetsaninitial valueoftheDisabledparameterthatpreventsthegenerationofthatapplicationexecutablefileduringthe buildprocess.
88
VMware, Inc.
Examples
Ifyoudonotselectthecmd.exe,regedit.exe,oriexplore.exetroubleshootingentrypointsduringthe captureprocess,andyoudevelopaneedtodebugtheenvironment,youcanmodifytheDisabledparameter togeneratetheseentrypoints.
[app.exe] Source=%ProgramFilesDir%\<my_app>\<app>.exe Disabled=0
ReadOnlyData
TheReadOnlyDataparameterspecifiesthenameofthereadonlyvirtualregistryfilecreatedduringthe applicationbuildanddesignatestheprimarydatacontainerforanapplication. Donotmodifythisparameter.ThePackage.inifiledisplaysthisparameterincaseyouwanttofindthe primarydatacontainer. Whentheprimarydatacontainerislessthan200MB,ThinAppstoresthecontainerwithinanentrypoint executablefile.Whentheprimarydatacontainerismorethan200MB,ThinAppstoresthecontainerasa.dat filethatcannotserveasanentrypointfortheapplication.
Examples
ThinAppsetstherequiredvalueoftheReadOnlyDataparameterthatspecifiesPackage.ro.tvrasthename ofthevirtualregistryfile.
ReadOnlyData=bin\Package.ro.tvr
ReserveExtraAddressSpace
TheReserveExtraAddressSpaceparameterindicatestheamountofextraaddressspacetoreserveforthe capturedexecutablefile. ThinAppusestheexecutablefilelistedintheSourceparametertodeterminetheamountofmemoryaddress spacetoallocateforanapplication.Whenyoubuildapackagethatincludesasourceexecutablefilethatisnot includedinthepackage,suchasacmd.exeentrypoint,oryouactivateautomaticupdatesforanapplication thatdirectsthenewversionoftheapplicationtothesandbox,ThinAppadjuststotheneedformorememory butdoesnotreserveasetamountofextraaddressspace.Inrarecasesthatmightinvolvetechnicalsupport, youcanusetheReserveExtraAddressSpaceparametertoaddmemoryspace.
Examples
YoucaninstructtheWindowsloadertoreserveextraaddressspace.AddKafterthenumbertoindicate kilobytesorMtoindicatemegabytes.
[<app>.exe] Source=%ProgramFilesDir%\<my_app>\<app>.exe ReserveExtraAddressSpace=512K
Shortcut
TheShortcutparameterpointsashortcutexecutablefiletotheprimarydatacontainerthatcontainsthe virtualfilesystemandvirtualregistry.Youcandistinguishaprimarydatacontainerfromotherentrypoints inthePackage.inifilebecausetheprimarydatacontainercontainstheReadOnlyDataentryandtheother entrypointscontaintheShortcutentry. To ensurethattheapplicationcanstart,theshortcutexecutablefilemustresideinthedirectorythatstoresthe primarydatacontainerfile.Forinformationabouttheprimarydatacontainer,seeReadOnlyDataon page 89. DonotmodifythevalueoftheShortcutparameter.ThinAppdetectstheprimarydatacontainerduringthe captureprocess.
VMware, Inc.
89
Examples
ThinAppcanpointAcroRd32.exe,theshortcutexecutablefile,toAdobe Reader 8.exe,theprimarydata containerfile.
[AcroRd32.exe] Shortcut=Adobe Reader 8.exe Source=%ProgramFilesDir%\Adobe\Reader 8.0\Reader\AcroRd32.exe
Shortcuts
TheShortcutsparameterliststhelocationswherethethinreg.exeutilitycreatesashortcuttoavirtual application. ThecaptureprocessdeterminesShortcutsentriesbasedontheshortcutstheapplicationinstaller implements.MSIfilesusetheShortcutsparametertodeterminetheshortcutstocreate.
Examples
YoucanmodifytheShortcutsparametertocreateashortcutintheMicrosoftOfficefolderoftheStartmenu totheMicrosoftWord 2003application.Ifyouaddshortcutlocations,usesemicolonstoseparatetheentries. Eachentrycancontainfoldermacros.
[Microsoft Office Word 2003.exe] ReadOnlyData=bin\Package.ro.tvr Source=%ProgramFilesDir%\Microsoft Office\OFFICE11\WINWORD.EXE Shortcuts=%Programs%\Microsoft Office
Source
TheSourceparameterspecifiestheexecutablefilethatThinApploadswhenyouuseashortcutexecutable file.Theparameterprovidesthepathtotheexecutablefileinthevirtualorphysicalfilesystem. ThinAppspecifiesthesourceforeachexecutablefile.Ifanapplicationsuitehasthreeuserentrypoints,such asWinword.exe,Powerpnt.exe,andExcel.exe,thePackage.inifileliststhreeapplicationentries.Each entryhasauniquesourceentry. IfThinAppcannotfindthesourceexecutablefileinthevirtualfilesystem,ThinAppsearchesthephysicalfile system.Forexample,ifyouusenativeInternetExplorerfromthevirtualenvironment,ThinApploadsthe sourceexecutablefilefromthephysicalfilesystem. TheSourceparameterandthe/bindirectoryintheprojectarenotrelatedtoeachother.The/bindirectory storesthegeneratedexecutablefileandtheSourcepathpointstotheinstalledexecutablefilestoredinthe readonlyvirtualfilesystem. DonotmodifytheSourcepath.Thecaptureprocessdeterminesthepathbasedonwheretheapplication installerplacestheexecutablefileinthephysicalfilesystemofthecapturemachine.ThinAppcreatesavirtual filesystempathbasedonthephysicalfilesystempath.
Examples
TheSourceparametercanpointtoanentrypointinC:\Program Files\<base_app>\<app>.exe.
[<app>.exe] Source=%ProgramFilesDir%\<base_app>\<app>.exe
90
VMware, Inc.
WorkingDirectory
TheWorkingDirectoryparameterdeterminesthefirstlocationinwhichanapplicationlooksforfilesand placesfiles. ThinAppdoesnotincludethisparameterbydefaultinthePackage.inifilebecauseThinappassumesthe workingdirectoryisthedirectorywheretheexecutablefileresides.ThetypicallocationinaThinApp environmentisonthedesktopofthedeploymentmachine. Youcansettheworkingdirectoryforindividualapplications.Theworkingdirectorycanexistinthevirtual filesystem,thesandbox,orthephysicalsystemdependingontheisolationmodesetting.Youcanusefolder macrosforthepathnameconventions. TheWorkingDirectoryparametersetstheinitialvalueoftheworkingdirectorybutthedirectoryisdynamic asyounavigatetootherlocations.
Examples
IfyouhaveanapplicationonaUSBdrive,youcanmodifytheWorkingDirectoryvaluefromthedefaultUSB locationtotheMy Documentsdirectoryonthedesktop.
[<app>.exe] WorkingDirectory=%Personal%
VMware, Inc.
91
PathnamescancontainThinAppfoldermacros.Anexampleis RequiredAppLinks=%SystemSystem%\Package.dat. Pathnamescanincludespaces. Pathnamescanspecifymultiplelinksordependencieswithasemicolonthatseparatesindividual filenames.AnexampleisRequiredAppLinks=Dependency1.exe; Dependency2.exe;. Pathnamescancontainasteriskandquerywildcardcharacters(*and?)infilenamesanddirectorypaths. Forexample,RequiredAppLinks=WildPath*\WildFilename*.dat. Ifapathcontainingawildcardcharactermatchesmorethanonedirectoryinthefilesystem,each matchingdirectorynamewillbereturned,toenableadditionalpathorfilenamematching. Wildcardsthatareusedincombinationwithenvironmentvariablescanprovidepowerfulcustomized recursivesearchingfordependentapplications.Forexample, OptionalAppLinks=%HOMEPATH%\OfficePlugins\*\*.
RequiredAppLinks
TheRequiredAppLinksparameterspecifiesalistofrequiredpackagestoimporttothebasepackageat runtime.YoucanconfigurethisparameterinthePackage.inifileofthebasepackage. Iftheimportoperationforanydependentpackagefails,anerrormessageappearsandthebaseexecutablefile exits.YoucanusetheOptionalAppLinksparameterinsteadtocontinueevenwhenloaderrorsoccur.Ifyou useawildcardpatterntospecifyapackageandfilesdonotmatchthewildcardpattern,ThinAppdoesnot generateanerrormessage. Importingpackagesinvolvesthefollowingoperations:
Examples
Ifyoupackagethe.NETframeworkinthedotnet.exepackageandyouhavea.NETapplication,youcan specifythattheapplicationneedstolinktothedotnet.exefilebeforeitcanstart.
RequiredAppLinks=C:\abs\path\dotnet.exe
Youcanspecifyarelativepath.
RequiredAppLinks=<relative_path>\dotnet.exe
YoucanspecifyaUNCpath.
RequiredAppLinks=\\server\share\dotnet.exe
YoucanuseThinAppfoldermacrosinthepathvalue.
RequiredAppLinks=%SystemSystem%\Package.dat
92
VMware, Inc.
Youcanimportasinglepackagelocatedinthesamedirectoryasthebaseexecutablefile.
RequiredAppLinks=Plugin.exe
Youcanimportasinglepackagelocatedinasubdirectoryofthebaseexecutablefile.
RequiredAppLinks=plugins\Plugin.exe
Youcanimportallexecutablefileslocatedatthen:\pluginsabsolutepath.
RequiredAppLinks=n:\plugins\*.exe
YoucanexpandthePLUGINSenvironmentvariableandimportallexecutablefilesatthislocation.
RequiredAppLinks=%PLUGINS%\*.exe
Youcanloadtwospecifiedpluginfilesandalistofexecutablefileslocatedunderthepluginlocation.
RequiredAppLinks=plugin1.exe;plugin2.exe;plugins\*.exe
OptionalAppLinks
TheOptionalAppLinksparameterissimilartotheRequireAppLinksparameterbutignoreserrorsandstarts themainapplicationevenwhenanimportoperationfails. Youmustcreatealinktotheprimarydatacontainerofapackage.Youcannotlinktoothershortcutpackages. Pathnamesareonthedeploymentmachinebecausethelinkingtakeseffectatruntimeontheclientmachine. Youcanspecifyabsolutepaths,suchasC:\abs\path\dotnet.exe,relativepaths,suchas relpath\dotnet.exe,andUNCpaths,suchas\\server\share\dotnet.exe. RequiredAppLinksandOptionalAppLinksparametersusethesamesyntax.Forinformationaboutthe RequireAppLinksparameterandexamples,seeRequiredAppLinksonpage 92. WhenusingtheApplicationLinkutilityviatheOptionalAppLinksparameter,thebasepackageandlinked dependenciesmustbebuiltwiththesameversionofThinApp.Toupgradeolderpackagestoincludethelatest versionoftheThinAppruntime,usetherelink.execommandlineutilityincludedwithThinApp.
VMware, Inc.
93
AppSyncWarningMessage=This application will become unavailable for use in AppSyncWarningPeriod days if it cannot contact its update server. Check your network connection to ensure uninterrupted service AppSyncExpireMessage=This application has been unable to contact its update server for AppSyncExpirePeriod days, so it is unavailable for use. Check your network connection and try again AppSyncUpdatedMessage= AppSyncClearSandboxOnUpdate=0
AppSyncClearSandboxOnUpdate
TheAppSyncClearSandboxOnUpdateparameterdetermineswhethertoclearthesandboxafteranupdate. ThinAppsetsaninitialvalueoftheAppSyncClearSandboxOnUpdateparameterthatkeepsthecontentsofthe sandbox.
Examples
YoucanmodifytheAppSyncClearSandboxOnUpdateparametertoclearthesandboxafterapplication updates.
AppSyncClearSandboxOnUpdate=1
AppSyncExpireMessage
TheAppSyncExpireMessageparametersetsthemessagethatappearswhentheconnectiontotheWebserver failsaftertheexpirationperiodendsandavirtualapplicationstarts.Theapplicationquitswhenthemessage appears.
Examples
ThinAppprovidesadefaultmessagefortheAppSyncExpireMessageparameter.
AppSyncExpireMessage=This application has been unable to contact its update server for <AppSyncExpirePeriod_value> days, so it is unavailable for use. Check your network connection and try again.
IfthevalueoftheAppSyncExpirePeriodparameterisinhoursorminutes,changethemessagetoindicate hoursorminutesratherthandays.
AppSyncExpirePeriod
TheAppSyncExpirePeriodparametersetstheexpirationofthepackageinminutes (m),hours (h),ordays (d). IfThinAppcannotreachtheWebservertocheckforupdates,thepackagecontinuestoworkuntilthe expirationperiodendsandtheuserclosesit.Evenaftertheexpirationperiodends,ThinApptriestoreachthe Webserverateachsubsequentstartupattempt.
Examples
Youcanpreventthepackagefromexpiringwiththedefaultnevervalue.
AppSyncExpirePeriod=never
AppSyncURL
TheAppSyncURLparametersetstheWebserverURLorfilesharelocationthatstorestheupdatedversionofan application.ThinAppchecksthislocationanddownloadstheupdatedpackage. ApplicationSyncworksovertheHTTP(unsecure),HTTPS(secure),andFileprotocols.PartoftheHTTPS protocolinvolvescheckingtheidentityoftheWebserver.Youcanincludeausernameandapasswordinthe AppSyncURLparameterforbasicauthentication.ThinAppadherestothestandardInternetExplorerproxy setting. YoumustuncommenttheAppSyncURLparametertoactivateallApplicationSyncparameters.
94
VMware, Inc.
Examples
YoucanassignanHTTPorHTTPSvaluetotheAppSyncURLparameteraccordingtothefollowingformat.
AppSyncURL=https://<site.com>/<path>/<primary_data_container_name>
Youcanspecifylocalandnetworkdrivepaths.Aprimarydatacontainercanbeeithera.exeor.datfile.
file:///C:/<path>/<primary_data_container_name>
YoucanuseaUNCpathandaccesslocationsofnetworkresources.
file://<server>/<share>/<path>/<primary_data_container_name>
AppSyncUpdateFrequency
TheAppSyncUpdateFrequencyparameterspecifieshowoftenThinAppcheckstheWebserverforapplication updates.Youcansettheupdatefrequencyinminutes (m),hours (h),ordays (d). ThinAppsetsaninitialvalueof1dthatconnectsapackagetotheWebserveronceadaytocheckforupdates. ThinAppdoesnotcheckforanupdatewhenanotherrunningapplicationsharesthesamesandbox.
Examples
YoucanmodifytheAppSyncUpdateFrequencyparameterwithavalueof0tosettheapplicationtocheckfor updateseverytimeyoustartit.
AppSyncUpdateFrequency=0
AppSyncUpdatedMessage
TheAppSyncUpdatedMessageparametersetsthemessagethatappearswhenanupdatedpackagefirststarts.
Examples
YoucanusetheAppSyncUpdatedMessageparametertoconfirmthattheapplicationisupdated.
AppSyncUpdatedMessage=Your application has been updated.
AppSyncWarningFrequency
TheAppSyncWarningFrequencyparameterspecifieshowoftenawarningappearsbeforethepackage expires.Youcanspecifyminutes (m),hours (h),ordays (d). ThinAppsetsaninitialvalueof1dthatsetsthewarningmessagetoappearonceaday.
Examples
YoucanmodifytheAppSyncWarningFrequencyparametertoconfigurethewarningtoappeareachtimethe applicationstarts.
AppSyncWarningFrequency=0
AppSyncWarningMessage
TheAppSyncWarningMessageparametersetsthemessagethatappearswhenthewarningperiodstarts.The firsttimeyoustarttheapplicationinthewarningperiod,awarningmessageappearsandThinApptriesto accesstheupdatefromtheserver.IfThinAppcannotupdatethepackage,ThinApptriesagaineverytimethe applicationstarts.ThewarningmessageappearsonlyaftereachAppSyncWarningFrequencyperiodexpires.
Examples
ThinAppincludesadefaultmessagefortheApplicationSyncutilitywarning.
AppSyncWarningMessage=This application will become unavailable for use in %%remaining_days%% day(s) if it cannot contact its update server. Check your network connection to ensure uninterrupted service.
The%%remaining_days%%variableisthenumberofdaysremaininguntiltheexpirationofthepackage.
VMware, Inc.
95
IfthevalueoftheAppSyncWarningPeriodparameterisinhoursorminutes,changethemessagetoindicate hoursorminutesratherthandays.
AppSyncWarningPeriod
TheAppSyncWarningPeriodparametersetsthestartofthewarningperiodbeforeapackageexpires.Youcan specifyminutes (m),hours (h),ordays (d).Whenthewarningperiodstarts,ThinAppcheckstheWebserver everytimeanapplicationstartsandsetsthevalueoftheAppSyncUpdateFrequencyparameterto0.
Examples
ThedefaultperiodoftheAppSyncWarningPeriodparameterisfivedays.
AppSyncWarningPeriod=5d
MSIArpProductIcon
TheMSIArpProductIconparameterspecifiestheiconstorepresenttheapplicationintheWindows Add or RemoveProgramsdialog.TheiconcanresideinICO,DLL,orexecutablefiles. Donotmodifythisparameter.IfanMSIpackagedoesnothaveanapplicationicon,theapplicationappears withagenericicon.
Examples
TheMSIArpProductIconparametercanspecifyaniconforMicrosoftOffice2007.Thisexampleusesanindex numbertopointtothefirsticoninsideaDLLfile.
MSIArpProductIcon=%Program Files Common%\Microsoft Shared\OFFICE12\ Office Setup Controller\OSETUP.DLL,1
MSIDefaultInstallAllUsers
TheMSIDefaultInstallAllUsersparametersetstheinstallationmodeoftheMSIdatabase.Youcaninstall a.msifileforallusersonacomputerandforindividualusers. ForinformationaboutforcinganMSIinstallationforeachuseroreachmachine,seeForceMSIDeployments forEachUserorEachMachineonpage 44. TheparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database.
96
VMware, Inc.
Examples
ThinAppsetsaninitialvaluefortheMSIDefaultInstallAllUsersparameterthatinstallstheMSIdatabase withshortcutsandfiletypeassociationsforalluserswhologintothecomputer.Theuserwhoinstallsthe databasemusthaveadministratorrights.Youcanusethisapproachtopushtheapplicationtodesktopsforall users.
[BuildOptions] MSIFilename=<my_msi>.msi MSIDefaultInstallAllUsers=1
AnadministratorcaninstalltheMSIdatabaseforallusersonamachineoranindividualuserwithout administratorrightscaninstallthedatabaseforonlythatuser.
[BuildOptions] MSIFilename=<my_msi>.msi MSIDefaultInstallAllUsers=2
MSIFilename
TheMSIFilenameparametertriggersthegenerationofanMSIdatabaseandspecifiesitsfilename.OtherMSI parameterscanworkonlywhenyouuncommenttheMSIFilenameparameter. ThisparameterproducesaWindowsInstallerwiththespecifiedfilenameintheoutputdirectory.Youcan createanMSIfilewhenyouwanttodeliverpackagestoremotelocationsthroughdesktopmanagement systems.Unlikeexecutablefilesthatrequirethemanualuseofthethinreg.exeutility,MSIfilesautomatethe creationofshortcutsandfiletypeassociationsforeachuser. ThinAppcommentsouttheMSIFilenameparameterunlessyouspecifyMSIgenerationduringthecapture process.
Examples
TheinventorynameisthedefaultnameintheMSIFilenameparameter.
[BuildOptions] ;MSIFilename=<inventory_name>.msi
YoucangenerateanMSIfileduringthebuildprocessandreplacethefilenamewithyourownfilename.
[BuildOptions] MSIFilename=<my_msi>.msi
MSIInstallDirectory
TheMSIInstallDirectoryparameterspecifiestherelativepathoftheMSIinstallationdirectory.Thepathis relativeto%ProgramFilesDir%forinstallationsoneachmachineandrelativeto%AppData%forinstallations foreachuser. WhenyouinstalltheMSIdatabaseforallusers,ThinAppplacesapplicationsinthe C:\%ProgramFilesDir%\<InventoryName> (VMware ThinApp)directoryduringtheinstallationoneach machine. WhenyouinstalltheMSIdatabaseforindividualusers,ThinAppplacesapplicationsinthe C:\%AppData%\<InventoryName> (VMware ThinApp)directory. TheparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database.
VMware, Inc.
97
Examples
IfyoudonotwanttheMSIInstallDirectoryparametertousealocationbasedontheinventoryname,you caninstalla.msifileintheC:\Program Files\<my_application>directory.
[BuildOptions] MSIFilename=<my_msi>.msi MSIInstallDirectory=<my_application>
MSIManufacturer
TheMSIManufacturerparameterspecifiesthemanufacturerorpackagingcompanyoftheMSIdatabaseand displaysthevalueintheWindowsAddorRemoveProgramsdialogbox. ThinAppsetstheinitialvalueoftheMSIManufacturerparametertothenameofthecompanythatyourcopy ofWindowsisregisteredto. TheparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database.
Examples
YoucanmodifytheMSIManufacturerparametertodisplaythenameofaspecificdepartment.Forexample, userscanseeadepartmentnameintheWindowsAddorRemoveProgramsdialogboxandcontactthehelp deskforthatdepartment.
[BuildOptions] MSIFilename=<my_msi>.msi MSIManufacturer=<department_or_company_name>
MSIProductCode
TheMSIProductCodeparameterspecifiesaproductcodefortheMSIdatabase.WindowsInstallerusesthe codetoidentifyMSIpackages. Thecaptureprocessgeneratesarandomanduniqueproductcodethatisnottakenfromtheapplication.The valuemustbeavalidGloballyUniqueIdentifier(GUID). The parameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database. DonotmodifytheMSIProductCodeparameter.
Examples
ThecaptureprocesscancreateanMSIfilewith590810CE65E63E0B08EF9CCF8AE20D0Eastheproduct code.
[BuildOptions] MSIFilename=<my_msi>.msi MSIProductCode={590810CE-65E6-3E0B-08EF-9CCF8AE20D0E}
MSIProductVersion
TheMSIProductVersionparameterspecifiesaproductversionnumberfortheMSIdatabasetofacilitate versioncontrol.ThisversionnumberisunrelatedtotheapplicationversionortheThinAppversion. ThinAppassignsaninitialversionof1.0.Thisversionappearsinthepropertiesofthedatabase. Whenyoudeployapackagetoamachinethatalreadyhasthepackageinstalled,WindowsInstallerchecksthe versionnumbersandblockstheinstallationofanolderversionoveranupdatedversion.Inthissituation,you mustuninstallthenewversion. TheMSIProductVersionparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationof aWindowsInstallerdatabase.
98
VMware, Inc.
Examples
YoucanchangethevalueoftheMSIProductVersionparameterwhenyouchangetheMSIpackage.Avalue of2.0causesThinApptouninstalla1.0versionofthepackageandinstallthe2.0versionofthepackage.
[BuildOptions] MSIFilename=<my_msi>.msi MSIProductVersion=2.0
TheformatoftheMSIProductVersionvalueisX.Y.Z.ThevaluesofXandYrangefrom0to255,andthevalue ofZrangesfrom0to65536.
MSIRequireElevatedPrivileges
TheMSIRequireElevatedPrivilegesparameterappliestoWindowsVistaandspecifieselevatedprivilege requirementsfortheMSIdatabase. MostuserswhologintoWindowsVistahaverestrictedprivileges.ToinstallMSIpackagesforalluserswho musthaveshortcutsandfiletypeassociations,theusersmusthaveelevatedprivileges. ThinAppsetsaninitialvalueoftheMSIRequireElevatedPrivilegesparameterthatmarkstheMSI databaseasrequiringelevatedprivileges.IfyoursystemissetupforUACprompts,aUACpromptappears whenyouinstallanapplication. TheparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database.
Examples
YoucanmodifytheMSIRequireElevatedPrivilegesparametertoblocktheUACpromptandthe installationacrossallcomputers.
[BuildOptions] MSIFilename=<my_msi>.msi MSIRequireElevatedPrivileges=0
MSIUpgradeCode
TheMSIUpgradeCodeparameterspecifiesacodefortheMSIdatabasethatfacilitatesupdates.Whentwo packages,suchastheversion1.0packageandtheversion2.0package,havethesameupgradecode,theMSI installerdetectsthislink,uninstallstheearlierpackage,andinstallstheupdatedpackage. Thecaptureprocessgeneratesarandomupgradecodebasedontheinventoryname.ToensurethattheMSI databaseversionshavethesameupgradecode,keepthesameinventorynameacrossversionsoftheMSI wrapper.Forinformationabouttheinventoryname,seeInventoryNameonpage 100. TheparameterworksonlywhentheMSIFilenameparameterrequeststhegenerationofaWindowsInstaller database. DonotmodifytheUpgradeCodevalueunlessthenewvalueisavalidGUID.
Examples
ThecaptureprocesscancreateanMSIfilewithD89F1994A24B3E110C947FD1E13AB93Fastheupgrade code.
[BuildOptions] MSIFilename=mymsi.msi MSIUpgradeCode={D89F1994-A24B-3E11-0C94-7FD1E13AB93F}
VMware, Inc.
99
MSIStreaming
TheMSIStreamingparameterdeterminestheuseof.cabfilesthatcanaffectapplicationperformance. ThinAppsetsaninitialvaluethatcompressesthepackagefilesina.cabfileandmakesiteasiertomovethe file.The .cabfileisintheMSIfile. ThedefaultsettingisMSIStreaming=0.Withthisvalue,thepackaged .exefilesand .datfilesare compressedinthe .cabfile.DisablingtheparameterinPackage.inihasthesameeffectassettingthevalue toO.WhentheMSIruns,thepackagedfilesareextractedtotheProgram FilesfolderoftheWindows operatingsystem,andregisteredeithertotheuserorthesystem,dependingonotherPackage.inisettings. SettingtheparametervalueMSIStreaming=1,resultsinthepackaged .exefilesand .datfilesbeing excludedfromthe .cabfile,andsubsequentlyfromthe .msifile.Thisvalueenablesachoicetobemade duringdeploymentbetweenregisteringtheapplicationfromanetworkshareorinstallingittheProgram FilesfolderoftheWindowsoperatingsystem. Ifyousetthisvalue,ensurethatboththeMSIandthe.exeand.datfilesoftheThinApppackageareavailable onthenetworkshare.
Examples
YoucanmodifytheMSIStreamingparametertoavoida.cabfilewhenitslowsdowntheinstallationprocess forapplications.YoucandistributetheMSIfileandindividualexecutablefilesinthe/bindirectorytoinstall theapplication.
[BuildOptions] MSIStreaming=1
InventoryName
TheInventoryNameparameterisastringthatinventorytrackingutilitiesuseforpackageidentification. This parameterdeterminesthedefaultnamesoftheprojectfolderandsandboxduringtheapplicationcapture process. TheapplicationcaptureprocesssetsadefaultvaluefortheInventoryNameparameterbasedonnewstrings createdunderoneofthefollowinglocations:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Thethinreg.exeutilityandThinAppMSIfilesreferencetheinventorynametodeterminetheproductname fordisplayintheAddorRemoveProgramscontrolpanel.Forexample,iftheinventorynameisSuperAppand youinstallanMSIfileorregisterapackagewiththethinreg.exeutility,theAddorRemoveprogramslist displaysaninstalledapplicationwiththeSuperApp (VMware ThinApp)string.ThinAppappendsVMware ThinApptotheinventorynametodistinguishapplicationsthatarevirtualizedduringinventoryscans. Youcanusethesameinventorynameacrossdifferentversionsofthesameapplicationtoensurethatonlythe mostrecentversionappearsinAddorRemoveProgramslist.Theapplicationsoverwriteeachotherinthe AddorRemoveProgramslistandpreventyoufromuninstallingalloftheregisteredpackages.Touninstall morethanoneversion,useadifferentinventorynameforeachversion.Forexample,useMicrosoftOffice2003 andMicrosoftOffice2007asinventorynamesratherthanjustMicrosoftOffice.Whenyoumaintaindifferent versionsofavirtualapplicationinthesameenvironment,youmightwanttochangetheSandboxName parametertoensurethatanewversionhasisolatedusersettingsinadifferentsandbox.
100
VMware, Inc.
Examples
YoucanmodifytheInventoryNameparametertoMicrosoftOffice2003.
[BuildOptions] InventoryName=Microsoft Office 2003
RemoveSandboxOnExit
TheRemoveSandboxOnExitparameterdeletesthesandboxandresetstheapplicationwhenthelastchild processexits. ThinAppstoresallapplicationchangestotheregistryandfilesystemlocationswithWriteCopyorFull isolationmodeinthesandbox.ThinAppsetsaninitialvalueoftheRemoveSandboxOnExitparameterthat maintainsconsistentsettingsforthesandboxdirectoryacrossmultipleapplicationruns. Iftheapplicationcreateschildprocesses,ThinAppdoesnotdeletethesandboxuntilallchildprocessesexit. Applicationsmightbedesignedtoleavechildprocessesinplacethatcanblockthecleanupoperation. For example,MicrosoftOffice2003leavesthectfmon.exeprocess.Youcanuseascripttoendthe ctfmon.exeprocessandchildprocessestoforcethecleanupoperationtooccur. YoucandecideatruntimewhethertousetheRemoveSandboxOnExitscriptAPIfunctiontodeletethe sandboxonexit.
Examples
YoucanmodifytheRemoveSandboxOnExitparametertodeletethesandboxwhentheapplicationexits.When multipleusersshareanapplicationunderoneusername,youcandeletethesandboxtoeliminatetheprevious usersregistryandfilesystemchanges.
[BuildOptions] RemoveSandboxOnExit=1
SandboxName
TheSandboxNameparameterspecifiesthenameofthedirectorythatstoresthesandbox. Thinappsetsaninitialvaluethatusestheinventorynameasthesandboxname. Whenyouupgradeanapplication,thesandboxnamehelpsdeterminewhetheruserskeeppreviouspersonal settingsorrequirenewsettings.Changingthesandboxnamewithnewdeploymentsaffectstheneedtocreate asandboxwithdifferentsettingsorkeepthesamesandbox.
Examples
Whenyouupdateanapplicationandwanttousenewuserpreferencesfortheapplication,youcanmodifythe SandboxNameparametertoreflecttheupdatedversion.
[BuildOptions] SandboxName=My Application 2.0
SandboxNetworkDrives
TheSandboxNetworkDrivesparameterdetermineswhetherThinAppdirectswriteoperationstoanetwork driveortothesandbox,regardlessofisolationmodesettings. Whenyouusethisparametertodirectwriteoperationstonetworkdrives,theresultisthesameassettingthe isolationmodeforthedrivetoMergedmode.
VMware, Inc.
101
Examples
Whenyouwanttosavespaceorsharefilesforcollaborativework,leavethedefaultsettingofthe SandboxNetworkDrivesparametertodirectwriteoperationstonetworkdriveswithoutstoringchangesina sandbox.
[BuildOptions] SandboxNetworkDrives=0
Youcanstorechangesinthesandboxandpreventtheuserfrommakingchangestonetworkdrives.
[BuildOptions] SandboxNetworkDrives=1
SandboxPath
TheSandboxPathparameterdeterminesthepathtothesandbox. Thepathtothesandboxcanberelativeorabsolute,canincludefoldermacrosorenvironmentvariables,and canexistonanetworkdrive.ForadvancedinformationabouthowThinAppsetsaninitialsandboxlocation orsearchesforthesandbox,seeSearchOrderfortheSandboxonpage 103. YoumightworkwiththeSandboxPathparametertoaddresslocal,USBdrive,ornetworkneeds,toaddress spacelimitationsintheinitialsandboxlocation,ortomovethesandboxtothedesktopfortroubleshooting purposes. ThesandboxpathdoesnotincludethesandboxnamebecausetheSandboxNameparameterdeterminesthat name.
Examples
YoucanmodifytheSandboxPathparametertocreatethesandboxinthesamedirectoryastheexecutablefile. IfMozilla Firefox 3.0isthevalueoftheSandboxNameparameter,youcancreatetheMozilla Firefox 3.0sandboxinthesamedirectorythatFirefoxrunsfrom.
[BuildOptions] SandboxPath=.
Youcancreatethesandboxinasubdirectorysubordinatetotheexecutablefilelocation.
[BuildOptions] SandboxPath=LocalSandbox\Subdir1
Youcancreatethesandboxinthe%AppData%folderoftheuserundertheThinstalldirectory.
[BuildOptions] SandboxPath=%AppData%\Thinstall
SandboxRemovableDisk
TheSandboxRemovableDiskparameterdetermineswhethertheapplicationcanwriteremovabledisk changestothedisksortothesandbox.RemovabledisksincludeUSBflashdevicesandremovableharddrives. ThinAppsetsaninitialvaluethatinstructstheapplicationtowriteremovablediskfilechangestothedisk.
Examples
Tosavespace,youcanmodifytheSandboxRemovableDiskparametertodirectremovablediskchangestothe sandbox.Dependingontheisolationmodefortheremovabledisk,changestofilesstoredonthediskcan resideinthesandboxorontheremovabledisk.
[BuildOptions] SandboxRemovableDisk=1
102
VMware, Inc.
VMware, Inc.
103
ThinAppstartsthesandboxsearchbytryingtofindthefollowingenvironmentvariablesinthisorder:
104
VMware, Inc.
Store the Sandbox in a Thinstall Directory on a USB Drive at the Same Level as the Executable File
ThesandboxinaThinstalldirectorylocatedonaUSBdrivemustbestoredatthesamelevelatwhichthe executablefileisstored. Store the sandbox in a Thinstall directory on a USB drive at the same level as the executable file 1 2 Ifthe%THINSTALL_SANDBOX_DIR%or%<sandbox_name>_SANDBOX_DIR% environmentvariablesareset, unsetthevariables. Ontheportabledevice,createaThinstalldirectoryinthesamedirectoryasyourcapturedapplication. Thenexttimethepackagedapplicationstartsfromtheportabledevice,theapplicationcreatesasandbox intheThinstalldirectory. 3 Iftheapplicationandsandboxoriginallyranfromanotherlocation,suchasacomputer,andyouneedthe samesandboxonaportabledevice,copytheThinstalldirectoryfrom%AppData%tothedirectorywhere theexecutablefileresidesonthedevice. ThinAppnolongerusesthesandboxintheoriginallocation.
VMware, Inc.
105
Sandbox Structure
ThinAppstoresthesandboxusingafilestructurealmostidenticaltothebuildprojectstructure.ThinAppuses macronamesforshellfolderlocations,suchas%AppData%,insteadofhardcodedpaths.Thisstructureenables thesandboxtomigratetodifferentcomputersdynamicallywhentheapplicationrunsfromnewlocations. Thesandboxincludesvirtualregistryfilesthatareconfiguredtoensurethatdatacorruptiondoesnotoccurif anapplicationintentionallyorunintentionallyterminates. Thesandboxcontainsthefollowingregistryfiles:
Registry.rw.tvrContainsallregistrymodificationsthattheapplicationmakes. Registry.rw.lckPreventsothercomputersfromsimultaneouslyusingaregistrylocatedonanetwork share. Registry.tvr.backupContainsabackupofthe.tvrfilethatThinAppuseswhentheoriginal.tvr fileiscorrupted. Registry.rw.tvr.transactRealtimecachethatcontainsalltransactionsfromthetimethattheyare written,regardlessofwhethertheyarecommittedtotherealregistryfile. Registry.tlog.cacheRealtimecachethatcontainsalltransactionsthatarenotyetcommittedtothe realregistryfile. Registry.tlogTransactionlogthatcontainsalltransactionsduringtheperiodthattheyarebeing writtentotherealregistrylog.Followingsuccessfulwritingtotherealregistrylog,thetransactionsare removedfromthisfile.
106
VMware, Inc.
Fileinformationforalllocaldrives Thisinformationincludesdirectories,filenames,fileattributes,filesizes,andfilemodificationdates.
Usage
snapshot.exe SnapshotFileName.snapshot [-Config ConfigFile.ini][BaseDir1][BaseDir2][BaseReg1]
VMware, Inc.
107
Examples
Snapshot My.snapshot Snapshot My.snapshot Config MyExclusions.ini Snapshot My.snapshot C:\MyAppDirectory HKEY_LOCAL_MACHINE\Software\MyApp
Options
Theoptionsspecifythedirectoriesorsubkeysinthesnapshot. Table 7-1. Snapshot Directories and Subkeys
Option -Config ConfigFile.ini Description Specifiesdirectoriesorregistrysubkeystoexcludeduringsnapshotcreation. If youdonotspecifyaconfigurationfile,ThinAppusesthesnapshot.inifile fromtheThinAppinstallationdirectory. Specifiesoneormorebasedirectoriestoincludeinthescan.Ifyoudonotspecify basedirectories,thesnapshot.exeutilityscansC:\andallsubdirectories. IfyouscanamachinewhereWindowsorprogramfilesareinstalledondifferent disks,includethesedrivesinthescan. Ifyouknowthatyourapplicationinstallationcreatesormodifiesfilesinfixed locations,specifythesedirectoriestoreducethetotaltimerequiredtoscana machine. BaseReg1 Speciesoneormorebaseregistrysubkeystoincludeinthescan.Ifyoudonot specifyregistrysubkeys,thesnapshot.exeutilityscansthe HKEY_LOCAL_MACHINEandHKEY_USERSkeys.
BaseDir1
Usage
snapshot.exe Snap1.snapshot -SuggestProject Snap2.snapshot OutputTemplate.ini
Examples
Snapshot Start.snapshot SuggestProject End.snapshot Template.ini
ThinApprequiresalloftheparameters.
Usage
snapshot.exe Template.ini -GenerateProject OutDir [-Config ConfigFile.ini]
Examples
Snapshot Template.ini GenerateProject C:\MyProject Snapshot Template.ini GenerateProject C:\MyProject Config MyExclusions.ini
108
VMware, Inc.
Chapter 7 Creating ThinApp Snapshots and Projects from the Command Line
Usage
snapshot.exe SnapshotFileName.snapshot -Print
Examples
Snapshot Start.snapshot Print
ThinApprequiresalloftheparameters.
Installtheapplicationandmakeanynecessarymanualsystemchanges.
VMware, Inc.
109
Savetodiskasnapshotofthenewmachineconfiguration.
snapshot.exe C:\End.snapshot
GenerateatemplatePackage.inifile.
snapshot.exe C:\Start.snapshot SuggestProject C:\End.snapshot C:\Template.ini
6 7
110
VMware, Inc.
Theembeddedandsandboxfilesystemsusefoldermacrostoenablefilepathstodynamicallyexpandat runtime.
IfanapplicationregistersDLLstoC:\winnt\system32whilerunningonWindows 2000,theusercanquit theapplicationandlogintoaWindowsXPmachine.OntheWindowsXPmachine,thefilesappeartoexistat C:\windows\system32andallrelatedregistrykeyspointtoC:\windows\system32. OnWindowsVista,ThinAppmovesWindowsSxSDLLsandpolicyinformationtomatchWindowsVista insteadofusingWindowsXPfilepathstyles.Thisfeatureenablesmostapplicationstomigratetoupdatedor olderoperatingsystems. ThinAppprovidesSxSsupportforapplicationsrunningonWindows2000eventhoughtheunderlying operatingsystemdoesnot.ThissupportenablesmostapplicationscapturedonWindowsXPtorunon Windows2000withoutchanges.
112
VMware, Inc.
VMware, Inc.
113
114
VMware, Inc.
Scriptsmodifythebehaviorofvirtualapplicationsdynamically.Youcancreatecustomcodebeforestartingan applicationpackagedwithThinApporafteranapplicationexits.Youcanusescriptstoauthenticateusersand loadconfigurationfilesfromaphysicaltovirtualenvironment. Callbackfunctionsruncodeduringspecificevents.Ifapplicationscreatechildprocesses,usecallback functionstoruncodeonlyinthemainparentprocess. APIfunctionsrunThinAppfunctionsandinteractwiththeThinAppruntime.APIfunctionscanauthenticate usersandpreventthestartofapplicationsforunauthorizedusers. AddingscriptstoyourapplicationinvolvescreatinganANSItextfilewiththe.vbsfileextensionintheroot applicationprojectdirectory.TherootprojectdirectoryisthesamedirectorythatcontainsthePackage.ini file.Duringthebuildprocess,ThinAppaddsthescriptfilestotheexecutablefileandrunseachofthescript filesatruntime. ThinAppusesVBScripttorunscriptfiles.ForinformationaboutVBScript,seetheMicrosoftVBScript documentation.YoucanuseVBScripttoaccessCOMcontrolsregisteredonthehostsystemorwithinthe virtualpackage. NOTEYoucannotusewscript.<command>callsinThinAppVBScript.Forexample, wscript.CreateObjectorwscript.Sleepwillgenerateerrors. Thisinformationincludesthefollowingtopics:
Callback Functions
Callbackfunctionscanrunundercertainconditions.For example,callbackfunctionsrunscriptcodeonly whenanapplicationstartsorquits. Callbackfunctionnamesincludethefollowingnames:
VMware, Inc.
115
ThefollowingcallbackexampleshowstheOnFirstSandboxOwnerandOnFirstParentExitfunctions.
------------------------example.vbs --------------------------------Function OnFirstSandboxOwner msgbox "The sandbox owner is: " + GetCurrentProcessName End Function Function OnFirstParentExit msgbox "Quiting application: " + GetCurrentProcessName End Function msgbox "This code will execute for all parent and child processes" ---------------------------------------------------------------------
.bat Example
Thefollowingscriptrunsanexternal.batfilefromanetworkshareinsidethevirtualenvironment.The .bat filemakesmodificationstothevirtualenvironmentbycopyingfiles,deletingfiles,orapplyingregistry changesusingregedit /s regfile.reg.Runthisscriptonlyforthefirstparentprocess.Ifyourunthisscript forotherprocesses,eachcopyofthecmd.exeutilityrunsthescriptandaninfiniterecursiondevelops.
Function OnFirstParentStart Set Shell = CreateObject("Wscript.Shell") Shell.Run "\\jcdesk2\test\test.bat" End Function
Timeout Example
Thefollowingscriptpreventstheuseofanapplicationafteraspecifieddate.TheVBSdateusesthe #mm/dd/yyyy#format,regardlessoflocale. Thischeckoccursuponstartupoftheparentprocessandanychildprocesses.
if Date >= #03/20/2007# then msgbox "This application has expired, please contact Administrator" ExitProcess 0 end if
116
VMware, Inc.
Findthelastslashinthepathandobtainthecharactersthatprecedetheslash.
LastSlash = InStrRev(Origin, "\") SourcePath = Left(Origin, LastSlash)
FormanewpathtotheODBC DLLfilelocatedoutsideofthepackage.
DriverPath=SourcePath + "tsodbc32.dll"
Modifythevirtualregistrytopointittothislocation.
Set WSHShell = CreateObject("Wscript.Shell") WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Transoft ODBC Driver\Driver," DriverPath
ThismodificationcausestheapplicationtoloadtheDLLfromanexternallocation.
.reg Example
Thefollowingscriptimportstheregistryvaluesfromanexternal.regfileintothevirtualregistryatruntime.
Function OnFirstParentStart ExecuteVirtualProcess "regedit /s C:\tmp\somereg.reg" End Function
VMware, Inc.
117
YoucanseparatethefilenamefromTS_ORIGINbyfindingthelastbackslashandremovingallofthecharacters followingit.
LastSlash = InStrRev(Origin, "\") SourcePath = Left(Origin, LastSlash)
Thesourcefiletocopyintothevirtualenvironmentisthepackagepathplusconfig.ini.
SourceFile = SourcePath + "Config.ini"
UsethefilesystemObjectparametertocheckthesourcefileexists.
Set objFSO = CreateObject("Scripting.filesystemObject") If objFSO.FileExists(SourceFile) Then
Ifthesourcefileexists,copyitintothevirtualfilesystem.The%ProgramFilesDir%\MyApplicationvirtual directoryisinthepackage.
objFSO.CopyFile SourceFile, DestFile, TRUE End if End Function
The%Personal%directoryisadirectorythathasMergedisolationmodebydefault. 3 Constructthe.regfile.
RegFile.WriteLine("Windows Registry Editor Version 5.00") RegFile.WriteBlankLines(1) RegFile.WriteLine("[HKEY_CURRENT_USER\Software\Thinapp\demo]") RegFile.WriteLine(chr(34) and "InventoryName" and chr(34) and "=" and chr(34) and GetBuildOption("InventoryName") and chr(34)) RegFile.Close
118
VMware, Inc.
Addtheinformationinthesystemregistry.
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34)) WaitForProcess RegEditPid, 0
Waituntiltheprocessiscomplete. 5 Cleantheenvironment.
fso.DeleteFile(RegFileName) End Function
API Functions
YoucanuseAPIfunctionsthatinstructThinApptocompleteoperationssuchasloadDLLsasvirtualDLLS, convertpathsfrommacroformattosystemformat,andruncommandsinsideofthevirtualenvironment.
AddForcedVirtualLoadPath
TheAddForcedVirtualLoadPath(Path)functioninstructsThinApptoloadallDLLsfromthespecifiedpath asvirtualDLLseveniftheyarenotlocatedinthepackage. UsethisfunctioniftheapplicationneedstoloadexternalDLLsthatdependonDLLslocatedinsidethe package. YoucanusetheForcedVirtualLoadPathsparameterinthePackage.inifiletoachievethesameresultas thisAPIfunction.SeeForcedVirtualLoadPathsonpage 75.
Parameters
Path [in]ThefilenameorpathforDLLstoloadasvirtual.
Examples
YoucanloadanyDLLlocatedinthesamedirectoryastheexecutablefileasavirtualDLL.
Origin = GetEnvironmentVariable("TS_ORIGIN")
YoucaninstructThinApptoloadallDLLsinthesameorlowerdirectoryfromwherethesourceexecutable fileresides.
AddForcedVirtualLoadPath(SourcePath)
ThisprocessenablesyoutodropadditionalfilesintheSourcePathtreeandhavethemresolveimport operationsagainstvirtualDLLs.
ExitProcess
TheExitProcessExitCodefunctionquitsthecurrentprocessandsetsthespecifiederrorcode.
Parameters
ExitCode [in]Theerrorcodetoset.Thisinformationmightbeavailabletoaparentprocess.Avalueof0indicatesno error.
VMware, Inc.
119
Examples
Youcanexittheprocessandindicatesuccess.
ExitProcess 0
Whentheprocessexits,thescriptingsystemreceivesitsOnLastProcessExistfunctioncallback.Anyloaded DLLsrunterminationcodetocleanuptheenvironment.
ExpandPath
TheExpandPath(InputPath)functionconvertsapathfrommacroformattosystemformat.
Parameters
InputPath [in]Apathinmacroformat.
Returns
Theexpandedmacropathinsystemformat.
Examples
Path=ExpandPath("%ProgramFilesDir%\Myapp.exe") Path=C:\Program Files\myapp.exe Allmacropathsmustescapethe%and#charactersbyreplacingthesecharacterswith#25and#23. Path=ExpandPath("%ProgramFilesDir%\FilenameWithPercent#25.exe") ThisexpandstoC:\Program Files\FileNameWithPercent%.exe.
ExecuteExternalProcess
TheExecuteExternalProcess(CommandLine)functionrunsacommandoutsideofthevirtual environment.Youcanusethisfunctiontomakephysicalsystemchanges.
Parameters
CommandLine [in]Representationoftheapplicationandcommandlineparameterstorunoutsideofthevirtual environment.
Returns
IntegerprocessID.YoucanusetheprocessIDwiththeWaitForProcessfunction.SeeWaitForProcesson page 125.
Examples
ExecuteExternalProcess("C:\WINDOWS\system32\cmd.exe /c copy C:\systemfile.txt C:\newsystemfile.txt")
Youcanrunacommandthatrequiresquotationmarksinthecommandline.
ExecuteExternalProcess("regsvr32 /s " & chr(34) & "C:\Program Files\my.ocx" & chr(34))
120
VMware, Inc.
ExecuteVirtualProcess
TheExecuteVirtualProcess(CommandLine)functionrunsacommandinsideofthevirtualenvironment. Youcanusethisfunctiontomakechangestothevirtualenvironment.
Parameters
CommandLine [in]Representationoftheapplicationandcommandlineparameterstorunoutsideofthevirtual environment.
Returns
IntegerprocessID.YoucanusetheprocessIDwiththeWaitForProcessfunction.SeeWaitForProcesson page 125.
Examples
ExecuteVirtualProcess("C:\WINDOWS\system32\cmd.exe /c copy C:\systemfile.txt C:\virtualfile.txt")
Youcanrunacommandthatrequiresquotationmarksinthecommandline.
ExecuteVirtualProcess("regsvr32 /s " & chr(34) & "C:\Program Files\my.ocx" & chr(34))
GetBuildOption
TheGetBuildOption(OptionName)functionreturnsthevalueofasettingspecifiedinthe[BuildOptions] sectionofthePackage.inifileusedforcapturingapplications.
Parameters
OptionName [in]Nameofthesetting.
Returns
Thisfunctionreturnsastringvalue.Iftherequestedoptionnamedoesnotexist,thefunctionreturnsanempty string().
Examples
Package.ini contains: [BuildOptions] CapturedUsingVersion=4.0.1-2866
ThefollowinglineappearsinaVBSfile:
Value = GetBuildOption("CapturedUsingVersion")
GetFileVersionValue
TheGetFileVersionValue(Filename, Value)functionreturnsversioninformationvaluefromfilessuch asaspecificDLL,OCX,orexecutablefile.Youcanusethisfunctiontodeterminetheinternalversionnumber ofaDLLorretrieveDLLinformationaboutthecopyrightowneroraproductname.
Parameters
Filename [in]Thenameofthefilenamewhoseversioninformationisbeingretrieved. Value [in]Thenameofthevaluetoretrievefromtheversioninformationsectionofthespecifiedfile.
VMware, Inc.
121
YoucanretrievethefollowingvaluesfrommostDLLs:
Comments InternalName ProductName CompanyName LegalCopyright ProductVersion FileDescription LegalTrademarks PrivateBuild FileVersion OriginalFilename SpecialBuild
Returns
Thisfunctionreturnsastringvalue.Iftherequestedfilenamedoesnotexist,orthefunctioncannotlocatethe specifiedvalueinthefile,thefunctionreturnsanemptystring().
Examples
FileVersion = GetFileVersionValue("C:\windows\system32\kernel32.dll," "FileVersion") if FileVersion = "1.0.0.0" then MsgBox "This is Version 1.0!" End if
GetCommandLine
TheGetCommandLinefunctionaccessesthecommandlineparameterspassedtotherunningprogram.
Returns
Thisfunctionreturnsastringthatrepresentsthecommandlineargumentspassedtothecurrentrunning program,includingtheoriginalexecutablefile.
Examples
MsgBox "The command line for this EXE was " + GetCommandLine
GetCurrentProcessName
TheGetCurrentProcessNamefunctionaccessesthefullvirtualpathnameofthecurrentprocess.
Returns
Thisfunctionreturnsastringthatrepresentsthefullexecutablepathnameinsideofthevirtualenvironment. Inmostcircumstances,thispathisC:\Program Files\...,evenifthepackagesourcerunsfromanetwork share.
Examples
MsgBox "Running EXE path is " + GetCurrentProcessName
122
VMware, Inc.
GetOSVersion
TheGetOSVersion()functionreturnsinformationaboutthecurrentversionofWindows.
Parameters
Thisfunctionhasnoparameters.
Returns
ThisfunctionreturnsastringintheMAJOR.MINOR.BUILD_NUMBER.PLATFORM_ID OS_STRINGformat. MAJORisonethefollowingvalues: WindowsVista WindowsServer2008 WindowsServer2003 WindowsXP Windows2000 WindowsNT4.0 6 6 5 5 5 4
BUILD_NUMBERisthebuildnumberoftheoperatingsystem. PLATFORM_IDassignsoneofthefollowingvalues:
OS_STRINGrepresentsinformationabouttheoperatingsystemsuchasService Pack 2.
Examples
if GetOSVersion() = "5.1.0.2 Service Pack 2" then MsgBox "You are running on Windows XP Service Pack 2!" endif
VMware, Inc.
123
GetEnvironmentVariable
TheGetEnvironmentVariable(Name)functionreturnstheenvironmentvariableassociatedwiththeName variable.
Parameters
Name [in]Thenameoftheenvironmentvariableforwhichthevalueisretrieved.
Returns
ThisfunctionreturnsthestringvalueassociatedwiththeNameenvironmentvariable.
Examples
MsgBbox "The package source EXE is " + GetEnvironmentVariable("TS_ORIGIN")
RemoveSandboxOnExit
TheRemoveSandboxOnExit(YesNo)functionsettogglesthatdeterminewhethertodeletethesandboxwhen thelastchildprocessexits. IfyousettheRemoveSandboxOnExitparameterto1inthePackage.inifile,thedefaultcleanupbehaviorfor thepackagewithisYes.YoucanchangethecleanupbehaviortoNobycallingRemoveSandboxOnExitwith thevalueof0.IfyoudonotmodifytheRemoveSandboxOnExit=1entryinthePackage.inifile,thedefault cleanupbehaviorforthepackageisNo.YoucanchangethecleanupbehaviortoYesbycalling RemoveSandboxOnExitwiththevalueof1.
Parameters
Yes No [in]Doyouwanttocleanupwhenthelastprocessshutsdown?1=Yes,0=No
Examples
Thefollowingexampleturnsoncleanup.
RemoveSandboxOnExit 1
Thefollowingexampleturnsoffcleanup.
RemoveSandboxOnExit 0
SetEnvironmentVariable
TheSetEnvironmentVariable(Name, Value)functionsetthevalueofanenvironmentvariable.
Parameters
Name [in]Thenameoftheenvironmentvariabletostorethevalue. Value [in]Thevaluetostore.
Examples
SetEnvironmentVariable "PATH", "C:\Windows\system32"
124
VMware, Inc.
SetfileSystemIsolation
TheSetfile systemIsolation(Directory, IsolationMode)functionsetstheisolationmodeofa directory.
Parameters
Directory [in]Fullpathofthedirectorywhoseisolationmodeistobeset. IsolationMode [in]Isolationmodetoset. 1=WriteCopy 2=Merged 3=Full
Examples
YoucansettheMergedisolationmodeforthetempdirectory.
Setfile systemIsolation GetEnvironmentVariable("TEMP"), 2
SetRegistryIsolation
TheSetRegistryIsolation(RegistryKey, IsolationMode)functionsetstheisolationmodeofaregistry key.
Parameters
RegistryKey [in]Theregistrykeyonwhichtosettheisolationmode.StartwithHKLMforHKEY_LOCAL_MACHINE,HKCUfor HKEY_CURRENT_USER,andHKCRforHKEY_CLASSES_ROOT. IsolationMode [in]Isolationmodetoset. 1=WriteCopy 2=Merged 3=Full
Examples
YoucansettheFullisolationmodeforHKEY_CURRENT_USER\Software\Thinapp\Test.
SetRegistryIsolation "HKCU\Software\Thinapp\Test," 3
WaitForProcess
TheWaitForProcess(ProcessID, TimeOutInMilliSeconds)functionwaitsuntiltheprocessIDis finishedrunning.
Parameters
ProcessID [in]TheprocessIDtoend.TheprocessIDcancomefromExecuteExternalProcessor ExecuteVirtualProcess. TimeOutInMilliSeconds [in]Themaximumamountoftimetowaitfortheprocesstofinishrunningbeforecontinuing.Avalueof0 specifiesINFINITE.
VMware, Inc. 125
Returns
Thisfunctionreturnsaninteger. 0=Timeoutfails 1=Processexits 2=Processdoesnotexistorsecurityisdenied
Examples
id = ExecuteExternalProcess("C:WINDOWS\system32\cmd.exe") WaitForProcess(id, 0)
126
VMware, Inc.
10
10
Stepbystepreproductionoftheprocedurethatyouperformedwhenyouencounteredtheproblem. Informationonthehostconfiguration.SpecifytheWindowsoperatingsystem,theuseofTerminalServer orCitrixXenapp,andanyprerequisiteprogramsthatyouinstalledonthenativemachine. CopiesoftheLogMonitortracefiles.SeeLogMonitorOperationsonpage 127. Exactcopyofthecapturefolderandallcontent.Donotincludethecompiledexecutablefilesfromthe /binsubfolder. Descriptionoftheexpectedandaccuratebehavioroftheapplication. (Optional)Copiesoftheapplicationsthatyoucaptured.Includetheservercomponentsconfigurationfor OracleServerorActiveDirectory. (Optional)Nativeorphysicalfilesorregistrykeysettingsthatmightberelevanttotheproblem. (Optional)Systemservicesorrequireddevicedrivers. (Optional)Virtualmachinethatreproducesthedefect.VMwaresupportmightrequestthisifthesupport contactisunabletoreproducetheproblem. (Optional)OneormoreWebExsessionstofacilitatedebugginginyourenvironment.
VMware, Inc.
128
VMware, Inc.
4 5 6
Locating Errors
ThinApploggingprovidesalargeamountofinformation.Thefollowingtipsmighthelpadvancedusers investigateerrors:
Ifyoufindanexception,scantheearlierpartofthetracefileforthesourceoftheexception.Ignorethe floatingpointexceptionsthatVirtualBasic6applicationsgenerateduringtypicaluse.
Whenyourunapplicationsfromanetworksharethatgeneratestwoprocesses,ignorethefirstprocess. ThinAppaddressestheslowperformanceofSymantecantivirusapplicationsbyrestartingprocesses.
VMware, Inc.
129
Log Format
Atracefileincludesthefollowingsections:
Thisexampleincludesthefollowingentries:
000257indicatesthelogentrynumber.Eachlogentryhasauniquenumber. 0a88indicatesthecurrentrunningthreadID.Iftheapplicationhasonethread,thisnumberdoesnot change.Iftwoormorethreadsrecorddatatothelogfile,youmightusethethreadIDtofollow threadspecificsequentialactionsbecauseThinApprecordslogentriesintheorderinwhichtheyoccur. mydll.dllindicatestheDLLthatmakestheAPIcall. 4ad0576dindicatesthereturnaddressfortheAPIcallthatmydll.dllmakes.Intypicalcircumstances, thereturnaddressistheaddressinthecodewherethecalloriginates. -> indicatestheprocessofenteringthecall.Forthecallentrylogelement,ThinAppdisplaystheinput parameters.Theseparametersareinandin/outparameters.
130
VMware, Inc.
---Modules loaded -PRELOADED_MAP 00400000-00452fff, C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe PRELOADED_BY_SYSTEM 00400000-00452fff, C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe SYSTEM_LOADED 00400000-00452fff, C:\test\AcroRd32.exe MEMORY_MAPPED_ANON 013b0000-020affff, C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.dll ----Timing Report: list of slowest 150 objects profiled --8255572220 total cycles (2955.56 ms): |sprof| thinapp_LoadLibrary2 765380728 cycles (274.01 ms) on log entry 21753 428701805 cycles (153.48 ms) on log entry 191955 410404281 cycles (146.93 ms) on log entry 193969 .
VMware, Inc. 131
. ... 438 total calls 7847975891 total cycles (2809.64 ms): |sprof| ts_load_internal_module 764794646 cycles (273.80 ms) on log entry 21753 426837866 cycles (152.81 ms) on log entry 191955 408570540 cycles (146.27 ms) on log entry 193969 . . ... 94 total calls 4451728477 total cycles (1593.76 ms): |sprof| ts_lookup_imports 544327945 cycles (194.87 ms) on log entry 21758 385149968 cycles (137.89 ms) on log entry 193970 187246661 cycles (67.04 ms) on log entry 190210 . . ... 34 total calls 1099873523 total cycles (393.76 ms): |sprof| new_thread_start 561664565 cycles (201.08 ms) on log entry 151922 531551734 cycles (190.30 ms) on log entry 152733 1619002 cycles (0.58 ms) on log entry 72875
Potential Errors
ThePotential Errors Detectedsectionmarkslogentriesthatmightpostproblemswiththreeasterisks (***).Forinformationaboutinterpretingthissection,seeLocatingErrorsonpage 129.
----Potential Errors Detected --006425 0000075c LoadLibraryExW 'C:\Program Files\Adobe\Reader 8.0\Reader\Microsoft.Windows.Common-Controls.DLL' flags=2 -> 0 (failed ***) 006427 0000075c LoadLibraryExW 'C:\Program Files\Adobe\Reader 8.0\Reader\Microsoft.Windows.Common-Controls\Microsoft.Windows.Common-Controls.DLL' flags=2 -> 0 (failed ***) 006428 0000089c nview.dll :1005b94b<-kernel32.dll:7c80ae4b *** LoadLibraryW ->HMODULE=7c800000h () *** GetLastError() returns 2 [0]: The system cannot find the file specified. 007062 0000075c LoadLibraryExW 'C:\Program Files\Adobe\Reader 8.0\Reader\en-US\Microsoft.Windows.Common-Controls.DLL' flags=2 -> 0 (failed ***) 010649 0000075c LoadLibraryExW 'C:\Program Files\Adobe\Reader 8.0\Reader\en-US\Microsoft.Windows.Common-Controls\Microsoft.Windows.Common-Controls.DLL' flags=2 -> 0 (failed ***) 019127 0000075c MSVCR80.dll :781348cc<-msvcrt.dll :77c10396 *** GetEnvironmentVariableA ->DWORD=0h (OUT LPSTR lpBuffer=*0h <bad ptr>) *** GetLastError() returns 203 [0]: The system could not find the environment option that was entered. 019133 0000075c MSVCR80.dll :78133003<-nview.dll :1000058c *** GetProcAddress ->FARPROC=*0h () *** GetLastError() returns 127 [203]: The specified procedure could not be found. 019435 0000075c MSVCR80.dll :78136e08<-dbghelp.dll :59a60360 *** Getfile type ->DWORD=0h ()*** GetLastError() returns 6 [0]: The handle is invalid. 019500 0000075c MSVCR80.dll :78134481<-nview.dll :1000058c *** GetProcAddress ->FARPROC=*0h () *** GetLastError() returns 127 [0]: The specified procedure could not be found. 019530 0000075c MSVCR80.dll :78131dcd<-dbghelp.dll :59a603a1 *** GetModuleHandleA ->HMODULE=0h () *** GetLastError() returns 126 [0]: The specified module could not be found.
132
VMware, Inc.
Theexampleshowsthe%drive_C%\test\cmd_test\bin,%SystemSystem%\foobar,and %SystemRoot%\foobarpathsasthelocationsinthevirtualfilesystemthatThinAppprobes.
----Potential Errors Detected --*** Unable to determine if any services need to be auto-started, error 2 001550 *** FindFirstFileW C:\test\cmd_test\bin\foobar.* -> INVALID_HANDLE_VALUE *** failed [system probe C:\test\cmd_test\bin\foobar.* -> ffffffffh][no virtual or system matches] *** FindFirstFileW ->HANDLE=ffffffffh .. *** GetLastError() returns 2 [203]: The system cannot find the file specified. *** FindFirstFileW C:\test\cmd_test\bin\foobar -> INVALID_HANDLE_VALUE *** failed [FS missing in view 0][fs entry not found %drive_C%\test\cmd_test\bin\foobar] [fs entry not found %drive_C%\test\cmd_test\bin] *** FindFirstFileW C:\WINDOWS\system32\foobar.* -> INVALID_HANDLE_VALUE *** failed [system probe C:\WINDOWS\system32\foobar.* -> ffffffffh][no virtual or system matches] *** FindFirstFileW C:\WINDOWS\system32\foobar -> INVALID_HANDLE_VALUE *** failed [FS missing in view 0][fs entry not found %SystemSystem%\foobar] *** FindFirstFileW C:\WINDOWS\foobar.* -> INVALID_HANDLE_VALUE *** failed [system probe C:\WINDOWS\foobar.* -> ffffffffh][no virtual or system matches] *** FindFirstFileW C:\WINDOWS\foobar -> INVALID_HANDLE_VALUE *** failed [FS missing in view 0][fs entry not found %SystemRoot%\foobar]
Perform Advanced Examination for cmd.exe Log Entries AmorethoroughexaminationofanentryfromthePotential Errorssectionofatracefilemightinvolve searchingthefullbodyoftheLogMonitortracefileforthatspecificentryandreviewingthesystemcallsand conditionsleadingtothepotentialerror. Forexample,thefollowingentryforthecmd.exeutilityinthePotential Errorssectionmightrequirea morethoroughexaminationthroughouttheLogMonitortracefile.
001550 *** FindFirstFileW C:\test\cmd_test\bin\foobar.*' -> INVALID_HANDLE_VALUE *** failed [system probe
Perform an advanced examination of the cmd.exe entry 1 2 Todeterminewhythecmd.exeutilityprobesc:\test\cmd_test\bin,scanthelogforthislogentry numberanddeterminewhatoccursbeforethiscall. Todeterminethelocationswherethecmd.exeutilityobtainsthec:\test\cmd_test path,scanthelog forGetCurrentDirectoryWandGetFullPathNameWentries.
000861 0a88 cmd.exe :4ad01580->USERENV.dll :769c0396 GetCurrentDirectoryW (IN DWORD nBufferLength=104h) 000862 0a88 GetCurrentDirectoryW -> 0x14 (C:\test\cmd_test\bin) 000863 0a88 cmd.exe :4ad01580<-USERENV.dll :769c0396 GetCurrentDirectoryW ->DWORD=14h (OUT LPWSTR lpBuffer=*4AD34400h->L"C:\test\cmd_test\bin") 000864 0a88 cmd.exe :4ad05b74->ole32.dll :774e03f0 Getfile type (IN HANDLE hFile=7h) 000865 0a88 Getfile type 7 -> 0x2 000866 0a88 cmd.exe :4ad05b74<-ole32.dll :774e03f0 Getfile type ->DWORD=2h () . . 001533 0a88 cmd.exe :4ad01b0d<-kernel32.dll:7c80ac0f SetErrorMode ->UINT=0h () 001534 0a88 cmd.exe :4ad01b13->kernel32.dll:7c80ac0f SetErrorMode (IN UINT uMode=1h) 001535 0a88 cmd.exe :4ad01b13<-kernel32.dll:7c80ac0f SetErrorMode ->UINT=0h () 001536 0a88 cmd.exe :4ad01b24->IMM32.DLL :7639039b GetFullPathNameW (IN LPCWSTR lpFileName=*1638C0h->L."," IN DWORD nBufferLength=208h) 001537 0a88 GetFullPathNameW . -> 20 (buf=C:\test\cmd_test\bin, file_part=bin) 001538 0a88 cmd.exe :4ad01b24<-IMM32.DLL :7639039b GetFullPathNameW ->DWORD=14h (OUT LPWSTR lpBuffer=*163D60h->L"C:\test\cmd_test\bin," OUT *lpFilePart=*13D8D4h ->*163D82h->L"bin") . . 001549 0a88 cmd.exe :4ad01b5f->USERENV.dll :769c03fa FindFirstFileW (IN LPCWSTR lpFileName=*1638C0h->L"C:\test\cmd_test\bin\foobar.*") 001550 0a88 FindFirstFileW C:\test\cmd_test\bin\foobar.* -> INVALID_HANDLE_VALUE *** failed [system probe C:\test\cmd_test\bin\foobar.* -> ffffffffh][no virtual or system matches]
VMware, Inc.
133
Createa##Attributes.inifilewiththefollowingentries:
[Isolation] DirectoryIsolationMode=Full
Placethe##Attributes.inifileineachofthefollowingsubdirectories.
%AppData%\Microsoft\AddIns %AppData%\Microsoft\Office %AppData%\Microsoft\Outlook %Local AppData%\Microsoft\FORMS %Local AppData%\Microsoft\Outlook
(Optional)Ifthesubdirectoriesdonotexist,createthedirectories.
Inthisexample,11.0inthekeynameisforMicrosoftOutlook2003.
134 VMware, Inc.
2 3
AddanentrypointtoiExplorerandstartitwiththe-Eparameter. Forexample,addthefollowingentriestothePackage.inifile:
[iexplore.exe] Shortcut=xxxx.exe Source=%ProgramFilesDir%\Internet Explorer\iexplore.exe CommandLine=%ProgramFilesDir%\Internet Explorer\iexplore.exe -E
Addthefollowingvirtualregistrykey:
isolation_full HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer Value=DesktopProcess REG_DWORD=#01#00#00#00
AddthefollowingentriestothePackage.inifile:
[explorer.exe] Shortcut=xxxxxx.exe Source=%SystemROOT%\explorer.exe
VMware, Inc.
135
136
VMware, Inc.
Glossary
ApplicationLink Autilitythatlinksdependentapplicationstoabaseapplicationatruntimeandstartsalltheapplications togetherwhenyoustartthebaseapplication.Youcanusetheutilitytodeployandupdatecomponent packagesseparatelyratherthancaptureallcomponentsinthesamepackage. ApplicationSync Autilitythatupdatesanapplicationbydetectinganewpackagedversiononaserverornetworkshare. Youcanconfigureupdatesettings,suchasthecheckingofanupdateserveratcertainintervals.ThinApp detectsthemostrecentapplicationexecutablefileanddownloadsthedifferences. attributes.ini Thefilethatappliesconfigurationsettingsatthedirectorylevelofthepackageratherthantheentire package.The##Attributes.inisettingsoverridetheoverallPackage.inisettings.
build ToconvertaThinAppprojectintoapackage.YoucanbuildapackagewiththeSetupCapturewizardor withthebuild.batutility. capture Topackageanapplicationintoavirtualenvironmentandsetinitialapplicationparameters.ThinApp providestheSetupCapturewizardorthesnapshot.exeutilitytocreateaportableapplicationpackage thatisindependentoftheoperatingsystemitrunson. cleanmachine Thecomputerorvirtualmachine,installedwithonlythebasicWindowsoperatingsystem,onwhichyou capturetheapplication.TheWindowsoperatingsystemversionmustbetheearliestversionofWindows thatyouexpecttheapplicationtorunon.
entrypoint Anexecutablefilethatstartsthecapturedapplication.Anapplicationmighthavemultipleentrypoints. Forexample,theFirefox.exefilemightserveasanentrypointforaMozillaFirefoxapplication.The primarydatacontainerfilecanexistwithinanentrypointorasa.datfile. inventoryname AnamethatThinAppusesforinternaltrackingoftheapplication.Theinventorynamesetsthedefault projectdirectorynameandappearsintheAddorRemoveProgramsdialogboxforWindows. isolationmode Apackagesettingthatdeterminesthereadandwriteaccesstothephysicalenvironment.ThinApphas WriteCopy,Merged,andFullisolationmodes.
VMware, Inc.
137
package ThevirtualapplicationfilesthattheThinAppbuildprocessgenerates.Thepackageincludestheprimary datacontainerfileandentrypointfilestoaccesstheapplication. package.ini Thefilethatappliesconfigurationsettingstothepackageandthatresidesinthecapturedapplication folder.TheSetupCapturewizardsetstheinitialvaluesoftheconfigurationsettings. physical ReferstothecomputermemoryandfilesysteminwhichallstandardWindowsprocessesrun.Depending onThinAppisolationmodesettings,processesinthevirtualenvironmentcanaccessthephysical environment.Seealsonative,virtual. postscan Toestablishanimageorsnapshotofamachineafteryouinstalltheapplicationyouwanttocapture.The captureprocessstoresinavirtualfilesystemandvirtualregistrythedifferencesbetweentheprescanand postscanimages.Seealsoprescan,snapshot. prescan Toestablishabaselineimageorsnapshotofamachinebeforeyouinstalltheapplicationyouwantto capture.Thecaptureprocessstoresinavirtualfilesystemandvirtualregistrythedifferencesbetweenthe prescanandpostscanimages.Seealsopostscan,snapshot. primarydatacontainer Themainvirtualapplicationfile.Thefileisa.exefileora.datfilethatincludestheThinAppruntime andthereadonlyvirtualfilesystemandvirtualregistry.Theprimarydatacontainermustresideinthe same/bindirectorywithanysubordinateapplicationexecutablefilesbecauseentrypointsusethe informationintheprimarydatacontainer. project Thedatathatthecaptureprocesscreatesbeforeyoubuildapackage.Thecaptureprocessusesthe inventorynameasthedefaultprojectdirectoryname.Youcancustomizeparametersintheprojectfiles beforeyoubuildanapplicationpackage.Youcannotdeployacapturedapplicationuntilyoubuilda packagefromtheproject.
138
VMware, Inc.
Glossary
sandbox Thephysicalsystemfolderthatstoresruntimeuserchangestothevirtualapplication.Whenyoustartthe application,ThinAppincorporateschangesfromthesandbox.Whenyoudeletethesandbox,ThinApp revertstheapplicationtoitscapturedstate.Thedefaultlocationofthesandboxis %APPDATA%\Thinstall\<application_name>. sbmerge.exe Autilitythatmakesincrementalupdatestoapplications,suchastheincorporationofapluginora changeinabrowserhomepage.Thesbmerge.exeutilitymergesruntimechangesrecordedinthe sandboxbackintoaThinAppproject. snapshot ArecordingofthestateoftheWindowsfilesystemandregistryduringtheapplicationcaptureprocess. TheSetupCaptureprocessusesthesnapshot.exeutilitytotakeasnapshotbeforeandafterthe applicationisinstalledandstoresthedifferencesinavirtualfilesystemandvirtualregistry.Seealso postscan,prescan. snapshot.exe Autilitythatcreatesthesnapshotsofacomputerfilesystemandregistryandfacilitatestheprescanand postscanoperationsduringthecaptureprocess.OnlyadvanceduserswhobuildThinAppfunctionality intootherplatformsmightmakedirectuseofthisutility.Seealsopostscan,prescan,snapshot. snapshot.ini AconfigurationfilethatspecifiesthedirectoriesandsubkeystoexcludefromaThinAppprojectwhen youcaptureanapplication.Youcancustomizethisfileforapplications.
template.msi AtemplateforMSIfilesthatyoucancustomizetoadheretocompanydeploymentproceduresand standards.Forexample,youcanaddregistrysettingsforThinApptoaddtoclientcomputersaspartof theinstallation. thinreg.exe Autilitythatestablishesfiletypeassociations,setsupStartmenuanddesktopshortcuts,andfacilitates theopeningoffiles.Youmustrunthethinreg.exeutilitytoregisterexecutablefiles.MSIfilesautomate thethinreg.exeregistrationprocess. tlink.exe Autilitythatlinkskeymodulesduringthebuildprocess.
vftool.exe Autilitythatcompilesthevirtualfilesystemduringthebuildprocess. virtual Referstothelogicalfileandmemorywithinwhichacapturedapplicationruns.Processesinaphysical environmentcannotaccessthevirtualenvironment.Seealsophysical. virtualapplication Anapplicationthatyoucapturetomakeitportableandindependentoftheoperatingsystemitrunson. virtualfilesystem Thefilesystemasthecapturedapplicationseesit. virtualregistry Theregistryasthecapturedapplicationseesit. vregtool.exe Autilitythatcompilesthevirtualregistryduringthebuildprocess.
VMware, Inc.
139
140
VMware, Inc.
Index
Symbols
##Attributes.ini comparing to Package.ini 24, 66 editing 24
A
Active Directory authorizing group access 18 controlling access to applications 45 using Package.ini parameters 45 API parameters AddForcedVirtualLoadPath 119 ExecuteExternalProcess 120 ExecuteVirtualProcess 121 ExitProcess 119 ExpandPath 120 GetBuildOption 121 GetCommandLine 122 GetCurrentProcessName 122 GetEnvironmentVariable 124 GetFileVersionValue 121 GetOSVersion 123 RemoveSandboxOnExit 124 SetEnvironmentVariable 124 SetfileSystemIsolation 125 SetRegistryIsolation 125 WaitForProcess 125 Application Link defining 53, 56 defining access with the PermittedGroups parameter 59 effect on isolation modes 59 file and registry collisions 60 linking packages to base applications and using Application Sync 60 optional links 93 parameters 91 path name formats 91 required links 92 sample workflow 57 setting up nested links 58 storing multiple versions of linked applications 60 view of 57
Application Sync clashing with automatic update capabilities 53 defining 53 editing parameters 54 effect on entry point executable files 55 effect on thinreg.exe 40 fixing incorrect updates 54 forcing updates with appsync.exe commands 61 maintaining the primary data container name 55 parameters 93 updating base applications with linked packages 60 updating thinreg.exe registrations 55 applications capturing 15 controlling access for Active Directory groups 45 data statistics 20 difference between Application Sync and Application Link 53 not supported by ThinApp 12 sandbox considerations during upgrade processes 64 side by side upgrading 63 streaming requirements and recommendations 48 updating 53
C
capturing applications from command line 29 IE6 on Windows XP 28 phases of 15 requirements and dependencies 15 using Setup Capture wizard 28 using ThinApp Converter 30 with the Setup Capture wizard 1623 with the snapshot.exe utility 109 cmd.exe, defining 17 compression for executable files 22 for trace files 129
VMware, Inc.
141
computers defining a clean system 12 using virtual machines for clean systems 13 cut and paste operations, ThinApp limitations 49
M
Merged isolation mode 18 Microsoft Office capturing 25 customizing installation options 25 postscan options 26 requirements to capture 25 Microsoft Office 2007 configuring outside of capture process 27 Microsoft Vista, deploying MSI files 45 MSI files automating the thinreg.exe utility 21 building the database 43 customizing parameters 43 deploying on Microsoft Vista 45 generating 21, 22 modifying the Package.ini 43 overriding the installation directory 44 parameters 96
D
data container, See primary data container DCOM services, access for captured applications 12 deploying applications on network share 40 applications with deployment tools 39 executable files 40 MSI files 39 deployment tools, using MSI files 39 device drivers, incompatible with ThinApp 12 DLLs loading into memory 131 recording by Log Monitor 127 drivers, support for 49
E
entry points defining 17 for troubleshooting 17 in Setup Capture wizard 17 updating with Application Sync 55
N
nested links, using Application Link 58 network, streaming packages 47
O
operating systems support for 11 using the lowest version for ThinApp installation 13
G
global hook DLLs, reduced function with ThinApp 12
I
IE6 on Windows XP capturing 28 requirements 28 iexplore.exe, defining 17 installing ThinApp 13 inventory name, purpose of 21 isolation modes defining 18 Full 68 Merged 18 modifying 68 sample configuration 51 using Application Link 59 WriteCopy 19
P
Package.ini AccessDeniedMsg 72 Active Directory parameters 45 AddPageExecutePermission 72 AllowExternalKernelModeServices 81 AllowExternalProcessModifications 81 AllowUnsuppportedExternalChildProcesses 82 AnsiCodePage 87 AppSyncClearSandboxOnUpdate 94 AppSyncExpireMessage 94 AppSyncExpirePeriod 94 AppSyncUpdateFrequency 95 AppSyncUpdateMessage 95 AppSyncURL 94 AppSyncWarningFrequency 95 AppSyncWarningMessage 95 AppSyncWarningPeriod 96 AutoShutdownServices 82 AutoStartServices 82 BlockSize 83 CachePath 78 CapturedUsingVersion 86
L
log format 130 Log Monitor extra options 128 suspending and resuming logging 128 troubleshooting procedures 128 using 127
142
VMware, Inc.
Index
ChildProcessEnvironmentDefault 83 ChildProcessEnvironmentExceptions 83 CommandLine 88 common parameters 23 CompressionType 84 configuring Application Link parameters 91 configuring Application Sync parameters 93 configuring build parameters 71 configuring file and protocol association parameters 70 configuring individual application parameters 88 configuring isolation parameters 68 configuring locale parameters 87 configuring logging parameters 86 configuring MSI parameters 96 configuring object and DLL parameters 74 configuring process and service parameters 81 configuring runtime parameters 66 configuring sandbox parameters 100 configuring security parameters 72 configuring size parameters 83 configuring storage parameters 78 configuring version parameters 86 DirectoryIsolationMode 68 Disabled 88 DisableTracing 86 editing Application Sync parameters 54 ExcludePattern 71 ExternalCOMObjects 74 ExternalDLLs 75 FileTypes 70 ForcedVirtualLoadPaths 75 Icon 71 InventoryName 100 IsolatedMemoryObjects 76 IsolatedSynchronizationObjects 76 LocaleIdentifier 87 LocaleName 88 LogPath 86 modifying MSI parameters 43 MSI parameters 43 MSIArpProductIcon 96 MSICompressionType 85 MSIDefaultInstallAllUsers 96 MSIFilename 97 MSIInstallDirectory 97 MSIManufacturer 98 MSIProductCode 98 MSIProductVersion 98 MSIRequireElevatedPrivileges 99 MSIStreaming 100 MSIUpgradeCode 99
VMware, Inc.
NetRelaunch 66 NotificationDLLs 77 NotificationDLLSignature 77 ObjectTypes 77 OptimizeFor 85 OptionalAppLinks 93 OutDir 72 parameters 65102 parameters that apply to ##Attributes.ini 66 PermittedGroups 73 Protocols 70 QualityReportingEnabled 68 ReadOnlyData 89 RegistryIsolationMode 69 RemoveSandboxOnExit 101 RequiredAppLinks 92 ReserveExtraAddressSpace 89 RetainAllIcons 72 RuntimeEULA 67 SandboxCOMObjects 78 SandboxName 101 SandboxNetworkDrives 101 SandboxPath 102 SandboxRemovableDisk 102 Shortcut 89 Shortcuts 90 Source 90 StripVersionInfo 86 structure 66 UACRequestedPrivilegesLevel 74 UACRequestedPrivilegesUiAccess 74 UpgradePath 79 Version.XXXX 87 VirtualComputerName 67 VirtualDrives 80 VirtualizeExternalOutOfProcessCOM 78 WorkingDirectory 91 Wow64 68 packages building 23 configuring 22, 23, 65 defining 21 parameters applying settings at folder level instead of package level 24 for Application Link 91 for Application Sync 93 for build output 71 for file and block sizes 83 for file and protocol associations 70 for file storage 78 for individual applications 88 for isolation modes 68
143
for locales 87 for logging 86 for MSI files 43, 96 for objects and DLLs 74 for permissions 72 for processes and services 81 for sandbox storage 100 for sbmerge.exe 62 for ThinApp runtime 66 for thinreg.exe 41 for versions 86 PermittedGroups, effect on Application Link 59 primary data container defining 21 maintaining the name with Application Sync 55 size implications 21 project files 22 projects, opening during capture process 22
R
regedit.exe, defining 17 relink defining 64 examples 64
Setup Capture wizard authorizing user groups 18 browsing projects 23 building packages 23 compressing packages 21 entry points 17 installing applications 16 inventory name 21 package settings 22 postscan operation 16 prescan operation 16 project location 21 setting isolation modes 20 shell integration, reduced functions with ThinApp 12 side by side applications upgrading 63 snapshot.exe creating snapshots from the command line 107 sample commands 109 sample procedure 109 snapshot.ini, defining 107, 110 support for applications 11 for operating systems 11
S
sandbox considerations for upgraded applications 64 defining 20 location 20, 105 parameters 100 search order 103 structure 106 sbmerge.exe commands 62 defining 60 merging runtime changes 61 scripts .bat example 116 .reg example 117 callback functions 115 file copy example 117 reasons for 116 service example 117 system registry example 118 timeout example 116 virtual registry example 117 services automatic startup 46 starting and stopping in packages 46
T
technical support required information for troubleshooting 127 ThinApp applications that are not supported 12 browsing project files 22 deployment options 39 directory files 13 folder macros 111 in a VMware View environment 39 installing 13 recommendation for clean computers 12 requirements for installing and capturing applications 11 streaming packages from the network 47 supported operating systems and applications 11 updating applications 53 updating runtime in packages 64 using thinreg.exe 40 ThinApp Converter capturing multiple applications 30 configuration file 32 detecting application installation processes 36 process overview 30 system requirements 32
144
VMware, Inc.
Index
ThinAppConverter.ini configuring AppSettings 37 configuring HostEnvironment 32 configuring Settings 35 configuring VirtualMachineN 33 predefined environment variables 38 ThinDirect extracting and registering 30 thinreg.exe defining 40 parameters 41 running 41 starting with MSI files 21 updating registrations with Application Sync 55 with Application Sync 40 troubleshooting Explorer.exe 135 Java Runtime Environment 135 Microsoft Outlook 134 providing required information to support 127 with Log Monitor 128
U
upgrading applications methods and considerations 5364 side by side 63
V
virtual file system format stages 111 representing path locations with macros 111 using 111 VMware View, using captured applications 39 vregtool, listing virtual registry contents 106
W
WriteCopy isolation mode 19
VMware, Inc.
145
146
VMware, Inc.