SharePoint Feature and Solution upgrading

advertisement
SharePoint Feature and Solution
upgrading
Bram de Jager | Lead SharePoint Developer | Macaw
About Bram
• Lead SharePoint developer / architect for Information
Worker Solutions center of Macaw
• Started with SharePoint 2003
• Worked on projects for Shell, Hogeschool INHolland,
Library of Rotterdam and Univé.
• Contact
– http://bramdejager.wordpress.com
– @bramdejager
– bram.de.jager@macaw.nl
Agenda
•
•
•
•
Basics
Solution Upgrade
Feature Upgrade
Summary
Why?
• Creating / updating a content type in 1 site
collection is easy
• But having 20 site collections and 10
content types changes the game
When to use a feature?
• Isolated/ autonomous piece of functionality
• Distributed deployment
• Scoping where XML or custom code runs
Initial build (trade-off)
• Custom code vs. XML
• Code:
– Ability to DEBUG
– More control
– Upgrade artifact requires code
• XML:
– Site definitions, list template, delegate controls,
custom actions…
How was it done in 2007?
• Solution deployment: deploy and retract
– Upgrade was supported but did not install
new features
• Feature events: (un)install and
(de)activate
– No upgrade support, you would deactivate
and active the feature to trigger any logic
Deployment life-cycle
Add
Solution
Solution
added to
Solution Store
Deploy
Solution
Files deployed
to File System
on all servers
Feature install
event fires
Activate
Feature(s)
Element files
are executed
Feature active
event fires
Create solution with choice field, deploy via PowerShell
DEMO
SharePoint Feature and Solution Upgrading
SOLUTION UPGRADE
Farm vs. User solutions
• Farm solutions supports granular upgrade
• User solutions will automatically upgrade
all features to the latest version
Farm solution upgrade
• Update-SPSolution –Identity DevDays.wsp –
LiteralPath C:\DevDays.wsp
–GACDeployment
• Farm wide
– psconfig -cmd upgrade -inplace b2b
• Granular
– QueryFeatures() & Feature.Upgrade()
Granular upgrade
• QueryFeatures()
–
–
–
–
Guid featureId
Guid featureId, bool needsUpgrade
Guid featureId, Version featureVersion
SPFeatureScope scope, bool needsUpgrade
• Available for SPWebService (farm),
SPWebApplication, SPContentDatabase, SPSite
• Feature.Upgrade()
Upgrade life-cycle
Upgrade
Solution
Files updated on
File System on
all servers
Upgrade
Feature(s)
Upgrade actions
executed for
specified version
Feature
upgrading event
fires
Replacement or Update
• Retract & Deploy
– Only on initial deployment!
– Replaces all feature instances with definition
• Does not trigger upgrade actions
• No feature upgrade possible!
• Update
– On new version of the solution
– Deploys to file system
• Doesn’t trigger install for new feature :-S
User solution upgrade
• Upload new solution package in Solution
Gallery
• Press Upgrade button
• Solution and features are upgraded
• It’s all or nothing
SharePoint Feature and Solution Upgrading
FEATURE UPGRADE
Versioning
• Version attribute
• On activation a feature instance is created
• Deploy new version, feature definition gets
updated
• Easy tracking of feature definition and
associated feature instances
Feature Upgrade
• Upgrade according to upgrade actions
• Based on VersionRange with Begin &
End versions
– Actions for 0.0.0.0 – 0.9.9.9
– Other actions for 1.0.0.0 – 1.9.9.9
Multiple versions scenario
• v1.0.0.0
– Create Contacts list instance
• v2.0.0.0
– Add creation Events list instance
• v3.0.0.0
– Add creation Issues list instance
Site A
Feature DevDays
v1.0.0.0
v3.0.0.0
Feature DevDays
v1.0.0.0
DevDays.wsp
Site B
Feature DevDays
v3.0.0.0
v2.0.0.0
Feature DevDays
v2.0.0.0
DevDays.wsp
Site C
Feature DevDays
v3.0.0.0
Feature DevDays
v3.0.0.0
DevDays.wsp
Dependencies
• Child-child element of feature.xml
• <ActivationDependency> element
– New MinimumVersion attribute
UIVersion attribute
• New UIVersion attribute of feature.xml
• Specifies UI version for this feature with
operators (=, <, >, <=, >=, ;)
• Based on SPWeb.UIVersion (3 or 4)
• Example: Ribbon custom actions
Declarative upgrade actions
• New child element in feature.xml
• <UpgradeActions> element
– <VersionRange>
– <ApplyElementManifest>
– <AddContentTypeField>
– <MapFile>
Versioning scenario
DEMO
CustomUpgradeAction
• Child element of <UpgradeActions>
– <CustomUpgradeAction>
• New feature receiver FeatureUpgrading()
• Support for parameters
Adding field to content type, copy contents, hide old field
DEMO
SharePoint Feature and Solution Upgrading
SUMMARY
Upgrade approach
• Solution update instead of retract/deploy
• New feature
– Staple to existing site definition for new sites
– Script activation on existing sites
• Upgrade existing feature
– Farm wide or granular upgrade
Gotchas
• BeginVersion inclusive but EndVersion not
• Solution upgrade does not trigger (un)install event
feature
– When adding new feature after initial deployment, no
(un)install event. Manual Install-SPFeature.
• Quit PowerShell when building (out of sync)
• Enable ULS logging, change setting to Verbose
– Feature Infrastructure, Fields, General
SharePoint Feature and Solution Upgrading
Q&A
Resources
• MSDN – Packaging and Deployment
• Chris O’Brien “Nuts and Bolts”-blog
Download