3. REFERENCED DOCUMENTS................................................................................................................................ 43
REFERENCED COPYRIGHTS ............................................................................................................................... 44
Reference Information ...................................................................................................................................... 44
DOCUMENT CONTROL SHEET ............................................................................................................................ 45
DOCUMENT NAME, LOCATION, AND OWNER ............................................................................................................. 45
CONTINUOUS IMPROVEMENT ................................................................................................................................... 45
DOCUMENT HISTORY .............................................................................................................................................. 45
DEFINITIONS .......................................................................................................................................................... 46
REFERENCES ......................................................................................................................................................... 46
Page 3 of 46
4. Summary
Application Lifecycle Deployment of new applications, updates, and software patches is one of the most common – and
important – functions of any Citrix hosting framework. This framework maintains the reliability and stability of the XenApp
hosting tier while providing internal or external application developers a proven and repeatable process.
This document defines a framework for a repeatable, successful, deployment process to properly package, QA, UAT, and
future updates relative to deployment of business applications to Citrix.
Properly preparing software packages for deployment across an organization is a complex process involving multiple
steps, including repackaging, customization, impact assessment, QA and UAT.
The software packaging process can become exponentially more complex as a company’s size increases, especially
when the organization has multiple offices and software packaging centers across the globe. Application Lifecycle
Management must be centralized and utilize a best practice framework for success. Otherwise, different teams follow ad
hoc processes; the entire organization suffers. Problems include:
Costly Deployment Catastrophes – Deploying a poorly prepared software package can erase important files required by
mission-critical software, causing those software programs to fail. The resulting downtime can force company productivity
to a halt, increase IT help desk costs, and – depending on the importance of the application – potentially cost the
organization millions in lost revenue opportunities.
Software Rollout Delays – Without a clear, orderly process in place for preparing an application for deployment,
bottlenecks and packaging issues can take far too long to resolve and software rollouts can suffer lengthy delays.
Inefficient or Overloaded Packagers – Citrix Management cannot obtain accurate global view of who in IT is working on
what projects, so packaging assignments are often unevenly distributed. This means that projects that might have been
completed right away - if properly assigned - are instead overlooked, assigned to the wrong packager, or stuck in QA or
UAT; for example.
Duplicated Packaging Efforts – Lack of having a centralized Application Lifecycle Management for Business
Applications results in disparate packaging teams, duplicate work streams, potential for multiple strategies when a single
cohesive packaging initiative is required for success and Center of Excellence.
Lost Application Data – Data generated by the software packaging process is invaluable for improving the way, AIGGS
manage, package, and update applications. However, if the entire process is not centrally managed – or if the data
remains scattered in various spreadsheets, documents, and email communications – it isn’t available to the global
Application Lifecycle Management Team preventing a Center of Excellence for Citrix Application Deployment.
Page 4 of 38
12.
Policy stating naming standards for packages
Windows Installer Service creates a GUID for each new package, that GUID is tied to the patch (MSP) or version
aka clean uninstall and new install which is fully automated by Windows Installer Service by capturing new
package and new GUID associated to old GUID and trigger to perform clean uninstall
Document when to patch, policy that everything is patched as MSI/MSP and documented whether single dll or
regkey change
That GUID is associated to the primary GUID and using triggers create workflow install and dependency installs.
o In other words, you can have prerequisites so if this GUID (appA) does not exist it installs App A first,
then appB, then AppB1 regkey change
VOS impacts all of IT. Every team in IT must cooperate or management must be prepared to offer choices.
Application Packaging Process Flow Diagram
Packaging
request is
processed and
assigned
Packaging
Process
Pass Self
Test?
Yes
UAT
No
No
Yes
Pass UAT?
QA
Yes
No
Pass QA?
Page 12 of 38
Deployment
19.
Add additional rights to directories from within the MSI – the rights should be added to the ‘everyone’ group.
File and Directory Permissions
Allowed to grant write permissions on files e.g.: C:Program FilesAppmyfile.ext
Allowed to grant write permissions on folders e.g.: C:Program FilesAppLogs
Registry Permissions
Allowed to grant write permissions to the User Group to registry keys of the packaged application eg:
HKLMSoftwareMyApp
Allowed to grant write permissions to the User Group to registry values and data of the packaged application
e.g.: HKLMSoftwareMyAppSetting1 | mydata
Setting Security on a Registry Value in a Package:
Select “Installation Expert” Tab
Select “Registry” in the Feature Details section on the left.
Select the desired feature (normally “Complete”) from the “Current Feature” dropdown box.
In the lower left hand pane, expand the registry tree display as needed and navigate to the desired registry
key. (Note that if the desired key does not exist, it can be located in the upper left hand pane and dragged
and dropped to the lower left pane)
Right click the value to be operated on from the lower right pane then click “Details”. (Note that if the desired
value does not exist, it can be navigated to in the upper left and right hand panes and dragged and dropped
to the lower right pane)
Select the “Permissions” Tab
Leave the “Domain” box empty and enter “Everyone” in the Box labelled “User”.
Check the boxes by the permissions you require on the file.
Click “Add”
Setting Security Permissions for a Registry value inside a Package is now complete.
Note: Though the packagers are allowed to make certain exceptions mentioned above, they have been given limits on how far they can
deviate from standards. For some standards there are hard and fast rules that may not be deviated from. The following is a list of
standard items AI packagers cannot violate during the packaging process. These deviations need prior approval from the senior level
Management.
Files and Directories
Not allowed to write files located in other directories to enable the application to function e.g.: C:
Must document files located in C:Windows
Must document files located in C:WindowsSystem
Must document files located in C:WindowsSystem32
File System Permissions
Not allow to grant write permissions to the User Group to the root of C: directory
Not allow to grant write permissions to the User Group to the root of C:Windows and its’ children directories
Not allow to grant write permissions to the User Group to the C:Program Files directory
Not allow to grant write permissions to the User Group to the C:Program FilesCommon Files directory
Not allowed to grant write permissions on files under C:Windows directory.
Registry Permissions
Not allowed to grant write permissions to the User Group to any root hive
Not allowed to grant write permissions to the User Group to HKLMSoftware.
Page 19 of 38
20. Naming Conventions
Name
Package Folder
Description
Name of the package folder. This will
have the same name as MSI.
Examples
MyCompany-MyApp-6-6
MSI
Name of the MSI file, if not vendor
provided. Every MSI name should contain
the name of the app and version number.
The name should start with MyCompany.
MyCompany-MyApp-6-6.msi
MST
Name of the MST file. If the MSI is
vendor provided, use this name as the
base for all other names in this section.
MyCompany-MyApp-6-6.mst
MyCompany-MyApp-6-6.msi
Multiple MSTs should be named to
indicate the purpose of each MST.
Name of the
Application Package
doc
Destination Directory
Name of the AP document provided with
the application package. For SRM
packages, document’s name will have
SRM at the end.
Capture the default directory the install
routine creates. No version number
required.
MyCompany-MyApp-6-6.doc
MyCompany-Oracle-Client-10gSRM.doc
C:ProdMyAppsMyApp
C:Program FilesMyApp
Note:
Some 32 bit applications should be
installed in a short-name directory such
as C:Prod being default it would go to
(x86) directory on 64 bit and some
applications cannot “read” this type of
path statement.
Add/Remove
programs in Control
Panel
Only admin users will see this. The name
appearing in the Add/Remove control
panel is the name specified in the Product
Details of the MSI. The name should be
based on the MSI file name including the
version and Release number (but without
the '-'s).
Page 20 of 38
MyCompany MyApp 6.6
23. 1) Select SetupCapture and click on Next
SetupCapture – Welcome screen
2) The ‘Specify Target Installation File’ screen will display
3) Click on Browse
SetupCapture – Specify Target Installation File
Browse to the location of the project file where the MSI file will be saved
Name the project file (WSI) in the File name field as per the naming standards described in this document and
click on Save
Note: The SAMPLE below has been provided for reference only.
Page 23 of 38
24. MyCompany-MyApp1-5-0-1
MyCompany-MyApp1-5-0-1
Save WSI File per the naming standards
The ‘Specify Target Installation File’ screen will display with the ‘Target Installation’ populated with the MSI file
information
Click on Next
Z:CaptureMy-App1-V5-0-1My-App1-V5-0-1.msi
SetupCapture – Specify Target Installation File
Page 24 of 38
25.
The ‘SetupCapture Welcome’ screen will display
Leave the default settings for ‘Configuration File Location: Local PC’
Click on Settings
SetupCapture – Select Settings
The ‘SetupCapture Configuration’ screen will display
Select the ‘Directories to Watch’ panel
Add more drives and directories if the application installs files in other locations, otherwise leave the default
values and process by clicking on OK
Setup Capture Configuration Settings
Page 25 of 38
26.
Select ‘Snapshot’ and click on Next to take the system snapshot before the application is installed
Setup Capture – Capture Methodology screen
The ‘Begin Installation Capture’ screen will display
Click on Next
Setup Capture – Begin Installation Capture
Page 26 of 38
27.
This will scan all the files, directories and registry information on your computer
Setup Capture – Begin Installation Capture – Scan Status
When complete, click on Next
The ‘Execute Installation’ screen will display
Click on Browse to select the executable in the ‘.EXE Name:’ field
X:ProdTo-Be-MSIMyApp1Setup.exe
SetupCapture – Execute Installation
Click on Execute to complete the Software Installation Process
Page 27 of 38
28. Software Installation Process
Note: These steps may not be same for every application install
The ‘Setup’ screen will display
Click on Next
Software Installation Process – Setup Screen
Browse for the destination folder and click on Next
C:ProdMyApp1
Setup – Choose Destination Location
Page 28 of 38
29.
Select the ‘Setup Type’ and click on Next
Setup – Select the Setup Type
Select the ‘Program Folder’ and click on Next
My App1
Setup – Select Program Folder
Page 29 of 38
30.
The setup program will process and you can view the status from the ‘Setup Status ‘screen that will display
Setup Status
When complete, click on Finish
Setup – Setup Complete screen
Page 30 of 38
31.
The ‘SetupCapture – Execute Installation’ screen will display
After installing the application, any changes or customizations can be made at this point before taking the
snapshot again (i.e. adding ODBC entries, updating INI files etc.).
SetupCapture – Execute Installation screen
Once all the changes are made, click on Next
The ‘End Installation Capture’ screen will display
Click on Next
SetupCapture – End Installation Capture
Page 31 of 38
32.
At this point, SetupCapture will scan the computer again to find any differences
When complete, click on Next
SetupCapture – End Installation Capture – Scan Status screen
The ‘SetupCapture Inclusions’ screen will display
Verify the content and click on Next
C:ProdMyApp1Subdirectory
C:ProdMyApp1Subdirectory
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjre
C:ProdMyApp1Subdirectoryjrebin
C:ProdMyApp1Subdirectoryjrebin
SetupCapture – Inclusions screen
Page 32 of 38
33. The ‘SetupCapture Exclusions’ screen will display
Verify the content and click on Next
SetupCapture – Exclusions screen
The ‘Finish’ screen will display.
Verify the default directories and click on Finish
Page 33 of 38
35.
SetupCapture will process and will generate capture reports
My App1
SetupCapture – Finish – Generating Capture Reports
When complete with capturing reports, the ‘Saving Installation’ screen will display
Saving Installation progress screen
At this point, it will save the installation capture into a Project file (WSI)
Page 35 of 38
37.
The ‘Installation Expert’ screen will display
Click on Product Details
CompanyName-AppName-Version
Company Name
Version #
C:ProdMyApp
fileserverpackagescapture
Windows Installer Editor - Installation Expert
Enter in the following information, per the standards outlined in this document:
o Product Name
o Manufacturer
o Version
o Default Directory
SAMPLE:
Product Name:
MyCompany-MyApp1-V5.0.1
Manufacturer:
Business Unit
Version:
5.0.1
Default Directory: Click on "Change" button to select working directory. (C:ProdBusinessUnitMyApp1)
Page 37 of 38
38.
Select the ‘General Information’ panel
My Company MyApp1 5.0.1
Brian Murphy
Figure 1:
Installation Expert – General Information screen
Fill in the information as shown above
Note: Make sure to have the same Title name as the Product Name
Click on Compile
Click on Local Compile when prompted
Figure 2:
Local Compile
Page 38 of 38
39.
The ‘Saving Installation’ screen will display
Figure 3:
Saving Installation progress screen
Once compiled, you will have the MSI file saved in the package folder
Close the project file (WSI) and edit the MSI that has been saved
From the ‘Installation Expert’ screen, click on Files
My App1
My App1 Subdir
Installation Expert – Files screen
Clean up all the unnecessary files that are captured
Note: In this example, "WindowsSystem32tssesdir" folder and its contents can be deleted. It is up to the packager to keep the
package as clean as possible with file and registry information.
Page 39 of 38
40.
From the ‘Installation Expert’ screen, click on Registry
My App1
Installation Expert – Registry screen
Clean up any unnecessary Registry keys
From the ‘Setup Editor’ screen, select Components
My App1
My App1
Setup Editor – Components screen
Verify that there are no RED components or components with empty key paths
Page 40 of 38
41.
Save the MSI file
Test the package by installing on a test machine
Page 41 of 38
43. Referenced Documents
Document Name
Application Package
Template
Description
Team Owner
Template used to document the detailed description for application
package deployments.
Packaging Team
Microsoft Windows Installer
SDK
Microsoft packaging standard
More details can be found at:
http://www.arnebrachhold.de/2005/05/24/microsoft-component-installersoftware-development-kit-spring-2005
Microsoft
Page 43 of 38
45. Document Control Sheet
Document Name, Location, and Owner
Name
Location
Citrix Application Packaging Methodology
Creator
Brian Murphy
Continuous Improvement
The procedure defined in this document is subject to regular review based on input from Dell associates. Suggestions for
improvement to the content of this document should be submitted using the Dell Services Change Procedure.
Document History
Version
Date
Revision history or Review (Author)
1.0
10/6/2013
Document creation / Brian Murphy
1.1
10/8/2013
Minor revisions / Brian Murphy
Page 45 of 38
46. Definitions
BOS
TOS
VDI
VOS
VOSI
Bottom of Stack
Top Of Stack
Virtual Desktop Infrastructure
Virtual Operating System
Virtual Operating System Infrastructure
References
Reference Link
Source
Microsoft - Before Installing Failover Clustering
Microsoft
Installing a SQL Server 2008 R2 Failover Cluster
Microsoft
Hardware and Software Requirements for Installing SQL Server 2008 R2
Microsoft
Editions and Components of SQL Server 2008 R2
Microsoft
Features Supported by the Editions of SQL Server 2008 R2
Microsoft
How to: Create a New SQL Server Failover Cluster (Setup)
Microsoft
Using Upgrade Advisor to Prepare for Upgrades
Microsoft
SQL Server support policy for Microsoft Clustering
Microsoft
Microsoft 2008 R2 and SQL 2008 R2 Failover Clustering
Microsoft
What's New in Failover Clusters in Windows Server 2008
Microsoft
What's New in Failover Clusters in Windows Server 2008 R2
Microsoft
Additional Tests in Cluster Validation
Microsoft
Support for SQL Server on iSCSI technology components
Microsoft
Microsoft Certified Server Catalog for Windows 2008 R2
Microsoft
Catalog - Certified for Windows Server 2008 R2 – OS
Microsoft
Catalog - Works with Windows Server 2008 R2 – OS
Microsoft
Catalog - Supports Windows Server 2008 R2 - OS
Microsoft
SQL Server 2008 - Before Installing Failover Clustering
Microsoft
Features Supported by the Editions of SQL Server 2008 R2
Microsoft
Page 46 of 38