Sobald eine App fertig entwickelt wurde, kann diese in einen SharePoint Catalog hochgeladen werden und vom Anwender installiert werden. Evtl. möchte man aber Apps installieren sodaß die Anwender sie verwenden können. Die Anwender sollen aber nicht die App in andern Sites oder Webs installieren dürfen.
Hierfür bietet die SharePoint-Powershell Commandlets um eine App zu deployen und zu installieren. Und das ganze auch für Webanwendungen, denen kein App-Catalog zugewiesen wurde.
1. Import-SPAppPackage
als erstes muss das App-File hochgeladen werden. Dies wird mit dem Befehl “Import-SPAppPackage” erledigt. Der Parameter “Path” ist die Angabe der .app Datei. mit –Site wird die url der Sitecollection angegeben. Nur in Webs innerhalb der Sitecollection kann die App im nächsten Schritt installiert werden. Der dritte notwendige Parameter ist –Source. Dies ist ein Objekt vom Typ SPAppSource . Damit wird angegeben woher die App installiert wird. z.b. Marketplace oder CorporateCatalog. Es gibt aber auch ObjectModel als Source. Dies wird genutzt um die App über die Powershell ohne AppCatalog zu installieren.
Der erste Teil des Scripts sieht so aus:
$app = Import-SPAppPackage -Path "C:\temp\AppToDeploy.app" -Site "http://sp1" -Source ObjectModel
2. Install-SPApp
Als nächstes muss die App auch installiert werden. Dies wird mit “Install-SPApp” erledigt. Der Parameter –web gibt das Ziel an. Als Ziel kann nun nur ein Web dienen welches in der SiteCollection liegt, für die das App-File hochgeladen wurde.
-Identity gibt das AppPackage an. Dies ist das Rückgabeobjekt des Import-SPAppPackage Befehls.
die zweite Zeile des Scripts sieht nun so aus:
Install-SPApp -Web "http://sp1" -Identity $app
Der Rückgabewert ist ein AppInstance die auch mit Get-SPAppInstance aufgerufen werden kann:
1: AppPrincipalId : i:0i.t|ms.sp.int|cae02a3d-c65f-43f9-9efe-b1fdbc7c0a92@8be827ec-cd4b-4599-9435-52d93dadee5e
2: InError : False
3: App : Microsoft.SharePoint.Administration.SPApp
4: SiteId : 12a0cd84-1bb6-453a-b81d-29448cb18e9e
5: WebId : ef6dfe74-4c19-494f-af43-fa224d9b2644
6: Title : AppToDeploy
7: Id : 01bfba6c-6125-4460-b9f0-48374793919b
8: LaunchUrl : ~appWebUrl/Pages/Default.aspx?{StandardTokens}
9: Status : Installed
10: RemoteAppUrl :
11: AppWebFullUrl : http://app-daa8dcb3ef9bd6.spapps.grobl.local/SubWeb/AppToDeploy
12: SettingsPageUrl :
Der Status (Zeile 9) wird zunächst auf “Installing” stehen und nach erfolgreicher Installation auf “Installed” wechseln. D.h. Get-SPAppInstance sollte mehrmals ausgeführt werden bis die App installiert ist.