Provisionar una sandboxed solution con el Solution Hash y el Solution Id

26.5.11 / Comments (2) / by Unknown

Guardamos un artefacto (un sitio, por ejemplo) como sandboxed solution y obtenemos un bonito fichero WSP que luego queremos volver a desplegar declarativamente en otro entorno. Eso es posible si creamos un elemento Module en nuestro proyecto SharePoint 2010 de nuestra solución de Visual Studio. Pero junto con el fichero hay que provisionar una serie de metadatos indispensables para disponer de la solución lista para activar en el entorno de destino. Esto quedaría como:

<Module Name="MySolutions" Url="_catalogs/solutions" Path="MySolutions" RootWebOnly="TRUE">
<File Url="MyExportedSolution.wsp" Type="GhostableInLibrary">
<Property Name="SolutionId" Value="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx}" />
<Property Name="SolutionHash" Value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
<Property Name="SolutionTitle" Value="Mi solución" />
</File>

El SolutionTitle en el fondo no es relevante, pero sí lo son, y mucho, los otros dos. ¿Cómo obtenerlos? PowerShell al rescate de nuevo. En el entorno origen, en la colección de sitios donde acabamos de exportar la solution sandbox, iremos a buscar estos metadatos de la siguiente manera:

$site = get-spsite http://misitio
$web = $site.OpenWeb()
$list = $web.lists["Solution Gallery"]
$item = $list.GetItemById(1)   # El id que corresponda, of course
$item["SolutionHash"]
$item["SolutionId"]

Y simplemente utilizarlos para el Module. Finalmente, una vez provisionada la solución en el entorno destino, podemos activarla manualmente o mediante el comando PowerShell install-spusersolution:

install-spusersolution -identity MySolution.wsp -site http://misitiodestino

2 comentarios:

Omar De la hoz @ 11 de septiembre de 2012, 22:02

Hola, esto que tu explicas aca puede utilizarce para agregar una webpart personalizada a una pagina cualquiera en sharepoint online programaticamente?
he estado tratando de agregar una webpart personalizada en sharepoint online con el modelo de objetos cliente de sharepoint pero solo agrega webparts que vienen en sharepoint, osea solo agrega webparts que tienen como Assembly Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, como por ejemplo la ImageWebPart, pero las custom no he podido agregarlas desde codigo... de antemano gracias

Unknown @ 27 de septiembre de 2012, 20:06

Hola; no, esto no sirve para el provisionamiento de web parts. La mejor manera de resolver tu duda es en los foros de MSDN: http://social.msdn.microsoft.com/Forums/en-us/category/sharepoint

Saludos

Publicar un comentario