AppV5 - Sequencing Oracle 11g R2

27 Sep 2015

Apparently this is a fun topic. How do you sequence Oracle 11G R2 on AppV5?

I believe I have an answer. In my attempts to sequence Oracle 11G on AppV5 I came across a few issues and have come up with solutions that work for various applications that rely on this tool.

The first issue:
Oracle 11G only allows paths without spaces and special characters.

On Windows systems, if the path to your Java installation includes a space character, you must provide the path in DOS 8.3 format, as shown in the previous example.

This *maybe* fixed now, but I experienced issues with trying to install Oracle 11g to the 8.3 folder structure to place it under “Program Files” or “Program Files (x86)”. The sequenced application would be broken. This was a known/reported issue with AppV 5SP2 HF4 that was marked as ‘fixed’ by Microsoft for SP3+. I have not had the ability to confirm that and will continue this post with what I know works… I also believe that when expanded out it uses the full path with spaces as opposed to the 8.3 path.

Second Issue:
Installing Oracle 11G to the default ‘recommended’ directory will fail if you move your PackageInstallationRoot to a different drive.

This is because the second folder (apps - in this example) is not tokenized. Forcing AppV5 to utilize the token “appvPackgeDrive” which can expand out differently then you expect, breaking the application.

Third Issue:
Cannot install to PVAD.

The reason I chose to NOT utilize PVAD is if you do then Oracle cannot be used in connection groups.

So how do you resolve all these issues and sequence Oracle 11G R2?

The direction I went was to ensure the directory I sequenced the installer to was a tokenized directory. It also needed to a directory that, when expanded in the virtualized environment, does not contain any spaces or special characters.

The list of directories AppV5 tokenize’s can be found in the AppV 5.0 Sequencing Guide.

I’ll list them here:

Known Folder Token
Known Folder Path
AccountPictures
C:UsersAppDataRoamingMicrosoftWindowsAccountPictures
Administrative Tools
C:UsersAppDataRoamingMicrosoftWindowsStart MenuProgramsAdministrative Tools
AppData
C:UsersAppDataRoaming
Application Shortcuts
C:UsersAppDataLocalMicrosoftWindowsApplication Shortcuts
Cache
C:UsersAppDataLocalMicrosoftWindowsTemporary Internet Files
CD Burning
C:UsersAppDataLocalMicrosoftWindowsBurnBurn
Common Administrative Tools
C:ProgramDataMicrosoftWindowsStart MenuProgramsAdministrative Tools
Common AppData
C:ProgramData
Common Desktop
C:UsersPublicDesktop
Common Documents
C:UsersPublicDocuments
Common Programs
C:ProgramDataMicrosoftWindowsStart MenuPrograms
Common Start Menu
C:ProgramDataMicrosoftWindowsStart Menu
Common Startup
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
Common Templates
C:ProgramDataMicrosoftWindowsTemplates
CommonDownloads
C:UsersPublicDownloads
CommonMusic
C:UsersPublicMusic
CommonPictures
C:UsersPublicPictures
CommonRingtones
C:ProgramDataMicrosoftWindowsRingtones
CommonVideo
C:UsersPublicVideos
Contacts
C:UsersContacts
Cookies
C:UsersAppDataRoamingMicrosoftWindowsCookies
CredentialManager
C:UsersAppDataRoamingMicrosoftCredentials
CryptoKeys
C:UsersAppDataRoamingMicrosoftCrypto
Desktop
C:UsersDesktop
Device Metadata Store
C:ProgramDataMicrosoftWindowsDeviceMetadataStore
DocumentsLibrary
C:UsersAppDataRoamingMicrosoftWindowsLibrariesDocuments.library-ms
Downloads
C:UsersDownloads
DpapiKeys
C:UsersAppDataRoamingMicrosoftProtect
Favorites
C:UsersFavorites
Fonts
C:windowsFonts
GameTasks
C:UsersAppDataLocalMicrosoftWindowsGameExplorer
History
C:UsersAppDataLocalMicrosoftWindowsHistory
ImplicitAppShortcuts
C:UsersAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser PinnedImplicitAppShortcuts
Libraries
C:UsersAppDataRoamingMicrosoftWindowsLibraries
Links
C:UsersLinks
Local AppData
C:UsersAppDataLocal
LocalAppDataLow
C:UsersAppDataLocalLow
MusicLibrary
C:UsersAppDataRoamingMicrosoftWindowsLibrariesMusic.library-ms
My Music
C:UsersMusic
My Pictures
C:UsersPictures
My Video
C:UsersVideos
NetHood
C:UsersAppDataRoamingMicrosoftWindowsNetwork Shortcuts
Personal
C:UsersDocuments
PicturesLibrary
C:UsersAppDataRoamingMicrosoftWindowsLibrariesPictures.library-ms
Podcast Library
C:UsersAppDataRoamingMicrosoftWindowsLibrariesPodcasts.library-ms
Podcasts
C:UsersPodcasts
PrintHood
C:UsersAppDataRoamingMicrosoftWindowsPrinter Shortcuts
Profile
C:Users
ProgramFiles
C:Program Files
ProgramFilesCommon
C:Program FilesCommon Files
ProgramFilesCommonX64
C:Program FilesCommon Files
ProgramFilesCommonX86
C:Program Files (x86)Common Files
ProgramFilesX64
C:Program Files
ProgramFilesX86
C:Program Files (x86)
Programs
C:UsersAppDataRoamingMicrosoftWindowsStart MenuPrograms
Public
C:UsersPublic
PublicAccountPictures
C:UsersPublicAccountPictures
PublicGameTasks
C:ProgramDataMicrosoftWindowsGameExplorer
PublicLibraries
C:UsersPublicLibraries
Quick Launch
C:UsersAppDataRoamingMicrosoftInternet ExplorerQuick Launch
Recent
C:UsersAppDataRoamingMicrosoftWindowsRecent
RecordedTVLibrary
C:UsersPublicLibrariesRecordedTV.library-ms
ResourceDir
C:windowsresources
Ringtones
C:UsersAppDataLocalMicrosoftWindowsRingtones
Roamed Tile Images
C:UsersAppDataLocalMicrosoftWindowsRoamedTileImages
Roaming Tiles
C:UsersAppDataLocalMicrosoftWindowsRoamingTiles
SavedGames
C:UsersSaved Games
Searches
C:UsersSearches
SendTo
C:UsersAppDataRoamingMicrosoftWindowsSendTo
Start Menu
C:UsersAppDataRoamingMicrosoftWindowsStart Menu
Startup
C:UsersAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
System
C:windowssystem32
SystemCertificates
C:UsersAppDataRoamingMicrosoftSystemCertificates
SystemX86
C:windowsSysWOW64
Templates
C:UsersAppDataRoamingMicrosoftWindowsTemplates
User Pinned
C:UsersAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser Pinned
UserProfiles
C:Users
VideosLibrary
C:UsersAppDataRoamingMicrosoftWindowsLibrariesVideos.library-ms
Windows
C:windows
Custom Token
Custom Token Expansion
AppVAllUsersDir
C:UsersAll Users
AppVComputerName
-LT02
AppVCurrentUserSID
S-1-5-21-124525095-708259637-1543119021-705252
AppVEnvironmentVariableCommonProgramFiles
%commonprogramfiles%
AppVEnvironmentVariableProgramFiles
%ProgramFiles%
AppVPackageDrive
C:
AppVPackageRoot
C:AppInstallFolder
AppVSystem32Catroot
C:windowssystem32catroot
AppVSystem32Catroot2
C:windowssystem32catroot2
AppVSystem32DriversEtc
C:windowssystem32driversetc
AppVSystem32Driverstore
C:windowssystem32driverstore
AppVSystem32Logfiles
C:windowssystem32logfiles
AppVSystem32Spool
C:windowssystem32spool

 

There are multiple directories we can choose. I opted to use "Common AppData". That means I will install the Oracle client here: "C:ProgramData". It does not contain a space, is tokenized, and when expanded will remain on the C: drive. I created a 'response' file for the Oracle install.
```config ############################################################################### ## Copyright(c) Oracle Corporation 1998,2008. All rights reserved. ## ## ## ## Specify values for the variables listed below to customize ## ## your installation. ## ## ## ## Each variable is associated with a comment. The comment ## ## can help to populate the variables with the appropriate ## ## values. ## ## ## ############################################################################### #------------------------------------------------------------------------------- # Do not change the following system generated value. #------------------------------------------------------------------------------- oracle.install.responseFileVersion=http://www.oracle.com/2007/install/rspfmt_clientinstall_response_schema_v11_2_0 #------------------------------------------------------------------------------- # This variable holds the hostname of the system as set by the user. # It can be used to force the installation to use an alternative # hostname rather than using the first hostname found on the system # (e.g., for systems with multiple hostnames and network interfaces). ORACLE_HOSTNAME=wsapvseq07.healthy.bewell.ca #------------------------------------------------------------------------------- # Unix group to be set for the inventory directory. UNIX_GROUP_NAME= #------------------------------------------------------------------------------- # Inventory location. INVENTORY_LOCATION=C:\Program Files (x86)\Oracle\Inventory #------------------------------------------------------------------------------- # Specify the languages in which the components will be installed. # # en : English ja : Japanese # fr : French ko : Korean # ar : Arabic es : Latin American Spanish # bn : Bengali lv : Latvian # pt_BR: Brazilian Portuguese lt : Lithuanian # bg : Bulgarian ms : Malay # fr_CA: Canadian French es_MX: Mexican Spanish # ca : Catalan no : Norwegian # hr : Croatian pl : Polish # cs : Czech pt : Portuguese # da : Danish ro : Romanian # nl : Dutch ru : Russian # ar_EG: Egyptian zh_CN: Simplified Chinese # en_GB: English (Great Britain) sk : Slovak # et : Estonian sl : Slovenian # fi : Finnish es_ES: Spanish # de : German sv : Swedish # el : Greek th : Thai # iw : Hebrew zh_TW: Traditional Chinese # hu : Hungarian tr : Turkish # is : Icelandic uk : Ukrainian # in : Indonesian vi : Vietnamese # it : Italian # # Example : SELECTED_LANGUAGES=en,fr,ja SELECTED_LANGUAGES=en #------------------------------------------------------------------------------- # Complete path of the Oracle Home ORACLE_HOME=C:\ProgramData\Oracle\product\11.2.0\client_1 #------------------------------------------------------------------------------- # Complete path of the Oracle Base. ORACLE_BASE=C:\ProgramData\Oracle #------------------------------------------------------------------------------ #Name : INSTALL_TYPE #Datatype : String #Description: Installation type of the component. # # The following choices are available. The value should contain # only one of these choices. # InstantClient : InstantClient # Administrator : Administrator # Runtime : Runtime # Custom : Custom # #Example : INSTALL_TYPE = "Administrator" #------------------------------------------------------------------------------ oracle.install.client.installType=Custom #------------------------------------------------------------------------------- # Name : oracle.install.client.customComponents # Datatype : StringList # # This property is considered only if INSTALL_TYPE is set to "Custom" # # Description: List of Client Components you would like to install # # The following choices are available. You may specify any # combination of these choices. The components you choose should # be specified in the form "internal-component-name:version" # Below is a list of components you may specify to install. # # oracle.sqlj:11.2.0.1.0 -- "Oracle SQLJ" # oracle.rdbms.util:11.2.0.1.0 -- "Oracle Database Utilities" # oracle.javavm.client:11.2.0.1.0 -- "Oracle Java Client" # oracle.sqlplus:11.2.0.1.0 -- "SQL*Plus" # oracle.dbjava.jdbc:11.2.0.1.0 -- "Oracle JDBC/THIN Interfaces" # oracle.ldap.client:11.2.0.1.0 -- "Oracle Internet Directory Client" # oracle.rdbms.oci:11.2.0.1.0 -- "Oracle Call Interface (OCI)" # oracle.precomp:11.2.0.1.0 -- "Oracle Programmer" # oracle.xdk:11.2.0.1.0 -- "Oracle XML Development Kit" # oracle.network.aso:11.2.0.1.0 -- "Oracle Advanced Security" # oracle.assistants.oemlt:11.2.0.1.0 -- "Enterprise Manager Minimal Integration" # oracle.oraolap.mgmt:11.2.0.1.0 -- "OLAP Analytic Workspace Manager and Worksheet" # oracle.network.client:11.2.0.1.0 -- "Oracle Net" # oracle.ordim.client:11.2.0.1.0 -- "Oracle Multimedia Client Option" # oracle.ons:11.2.0.0.0 -- "Oracle Notification Service" # oracle.odbc:11.2.0.1.0 -- "Oracle ODBC Driver" # oracle.has.client:11.2.0.1.0 -- "Oracle Clusterware High Availability API" # oracle.dbdev:11.2.0.1.0 -- "Oracle SQL Developer" # oracle.rdbms.scheduler:11.2.0.1.0 -- "Oracle Scheduler Agent" # # Example : oracle.install.client.customComponents="oracle.precomp:11.2.0.1.0","oracle.ons:11.2.0.0.0","oracle.oraolap.mgmt:11.2.0.1.0","oracle.rdbms.scheduler:11.2.0.1.0" #------------------------------------------------------------------------------- oracle.install.client.customComponents=oracle.network.client:11.2.0.1.0,oracle.odbc:11.2.0.1.0 #------------------------------------------------------------------------------- #Name : MTS_PORT #Datatype : int #Description: Port number to be used for by the Oracle MTS Recovery Service to listen # for requests. This needs to be entered in case oracle.ntoramts is # selected in the list of custom components in custom install # # #Example : MTS_PORT = 2030 #------------------------------------------------------------------------------ oracle.install.client.oramtsPortNumber=49155 #------------------------------------------------------------------------------ # Host name to be used for by the Oracle Scheduler Agent. # This needs to be entered in case oracle.rdbms.scheduler is selected in the # list of custom components during custom install # # Example : oracle.install.client.schedulerAgentHostName = acme.domain.com #------------------------------------------------------------------------------ oracle.install.client.schedulerAgentHostName= #------------------------------------------------------------------------------ # Port number to be used for by the Oracle Scheduler Agent. # This needs to be entered in case oracle.rdbms.scheduler is selected in the # list of custom components during custom install # # Example: oracle.install.client.schedulerAgentPortNumber = 1500 #------------------------------------------------------------------------------ oracle.install.client.schedulerAgentPortNumber ```
I called the script through this command:
```shell setup.exe -nowait -nowelcome -silent -responseFile "%~dp0\silent.rsp" ping 127.0.0.1 -n 60 >NUL copy /y *.ora "C:\ProgramData\Oracle\product\11.2.0\client_1\network\admin" ```

And that's it!