SharePoint 2013 如何打包一个应用

o(╯□╰)o 其实蛮简单的,算是献丑了。

SharePoint 2013中的应用其实就是一个基于OpenXML的压缩包,你可以将后缀名从app修改为zip,然后就可以看到里面的结构了。

主要是三个文件:AppManifest.xml、AppIcon.png、AppIcon.png.config.xml。通过OpenXML的工具,还可以查看到他们互相之间还有关系(Relationship)。

然后就简单了,先建立一个可以序列化成XML格式的类AppDefinition(这里的类是最简单的,即不包含权限等信息)。如果你想要更专业些,可以根据SharePoint App Manifest (Schema map)中的XML Schema Definition(XSD)生成一个AppDefinition的类,用来序列化。

[XmlRoot("App", Namespace = "http://schemas.microsoft.com/sharepoint/2012/app/manifest")]
public class AppDefinition {
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlAttribute("ProductID")]
    public string ProductID { get; set; }

    [XmlAttribute("Version")]
    public string Version { get; set; }

    [XmlAttribute("SharePointMinVersion")]
    public string SharePointMinVersion { get; set; }

    [XmlElement]
    public AppProperties Properties { get; set; }

    [XmlElement(ElementName = "AppPrincipal")]
    public AppPrincipal Principal { get; set; }

    [XmlRoot]
    public class AppProperties {
        [XmlElement]
        public string Title { get; set; }

        [XmlElement]
        public string StartPage { get; set; }
    }

    [XmlRoot]
    public class AppPrincipal {
        [XmlElement]
        public RemoteWebApplication RemoteWebApplication { get; set; }
    }

    [XmlRoot]
    public class RemoteWebApplication {
        [XmlAttribute("ClientId")]
        public string ClientId { get; set; }
    }
}

然后通过XmlSerializer即可将实例化后的AppDefinition(definition)序列化为AppManifest.xml了。

AppDefinition definition = new AppDefinition() {
    Name = Guid.NewGuid().ToString(),
    ProductID = Guid.NewGuid().ToString("B"),
    Version = "1.0.0.0",
    SharePointMinVersion = "15.0.0.0",
    Properties = new AppDefinition.AppProperties() {
        Title = title,
        StartPage = launchUrl
    },
    Principal = new AppDefinition.AppPrincipal {
        RemoteWebApplication = new AppDefinition.RemoteWebApplication {
            ClientId = Guid.NewGuid().ToString("B"),
        }
    }
};
using (XmlWriter writer = XmlTextWriter.Create(partStream, new XmlWriterSettings() { Encoding = Encoding.UTF8, Indent = true })) {
    XmlSerializer serializer = new XmlSerializer(typeof(AppDefinition));
    serializer.Serialize(writer, definition);
}

最后用System.IO.Packaging下的Package类,打包就可以了。

using (Package package = Package.Open(stream, FileMode.Create)) {
    PackagePart manifestPart = package.CreatePart<AppDefinition>(new Uri("/AppManifest.xml", UriKind.Relative), "text/xml", definition);
    PackagePart iconPart = package.CreatePart<string>(new Uri("/AppIcon.png", UriKind.Relative), "application/wsp", path);
    PackagePart configPart = package.CreatePart<AppPartConfig>(new Uri("/AppIcon.png.config.xml", UriKind.Relative), "text/xml", config);

    package.CreateRelationship(manifestPart.Uri, TargetMode.Internal,
        "http://schemas.microsoft.com/sharepoint/2012/app/relationships/package-manifest");
    manifestPart.CreateRelationship(iconPart.Uri, TargetMode.Internal,
        "http://schemas.microsoft.com/sharepoint/2012/app/relationships/manifest-icon");
    iconPart.CreateRelationship(configPart.Uri, TargetMode.Internal,
        "http://schemas.microsoft.com/sharepoint/2012/app/relationships/partconfiguration");
}

O(∩_∩)O~~ 如果你能看懂并且会用到的话,就拿去玩吧。示例代码在这里下载

参阅:

Explore the app manifest and the package of an app for SharePoint

时间: 2024-08-24 16:11:13

SharePoint 2013 如何打包一个应用的相关文章

在移动设备上优化SharePoint 2013站点

本文由SPFarmer翻译自Waldek Mastykarz的文章 移动市场在持续的增长,在不远的将来,使用移动设备浏览网站将会超过电脑.为了保证用户友好的体验,我们必须优化网站,以便在不同的设备上展示.SharePoint 2013 提供了一系列的选项来优化在移动设备上访问面向公众的网站.根据你的实际情况,你可以选择一个或者一系列组合的选项. 在过去的几年里,使用移动设备浏览网站得到了极大的增长.据一些研究者说,到2015年,使用移动设备访问网站会超过电脑.移动设备有不同的尺寸和功能.因为电脑

SharePoint 2013 状态机工作流之UpdateItemActivity

原文:SharePoint 2013 状态机工作流之UpdateItemActivity 没什么可说的,一个Activity的使用介绍,其他类似的Activity也可以参考这个使用. 1.添加ApplyActivation和UpdateItemActivity,在onWorkflowActivated1节点的下面,setStateActivity1节点的上面,如下图: 2.配置ApplyActivation的_Context,新建字段,记得是字段,不是属性: 3.配置ApplyActivatio

sharepoint 2013 创建母版页

一.创建新的母版页, 并添加了新的样式表 1.从CodePlex 上获得Starter Master Pages for SharePoint 2010 或复制以下母版代码 <%@Master language="C#"%><%@Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft

移动设备和SharePoint 2013 - 第5部分:自定义应用

博客地址:http://blog.csdn.net/foxdave 原文地址 在该系列文章中,作者展示了SharePoint 2013最显著的新功能概观--对移动设备的支持. 该系列文章: 移动设备和SharePoint 2013 - 第1部分:概述 移动设备和SharePoint 2013 - 第2部分:设备管道和SharePoint页面模型 移动设备和SharePoint 2013 - 第3部分:推送通知 移动设备和SharePoint 2013 - 第4部分:定位 自定义应用 ShareP

SharePoint 2013 基础版 离线安装步骤

SharePoint 2013 基础版 离线安装步骤 1.    介绍 SharePoint 2013 提供了一个企业的业务解决方案,它利用了企业应用程序集成功能,以及灵活的部署选项和管理工具,将来自不同系统的信息集成到一个解决方案中.这个门户站点使得端到端的合作更为容易,实现了个人.团队和信息的整合.组织和搜索.用户可以通过门户内容和布局的定制和个性化以及目标受众,更快地找到相关信息.公司可以根据受众的公司职位.团队身份.兴趣或其他可以设置的成员规则来设定信息.程序和更新.SharePoint

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 部署一个App

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 部署一个App 部署Apps的可用的选项取决于你开发情境和应用程序类型.有三个主要的应用程序类型,并且每个要求不同部署情境.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 打包并发布App

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 打包并发布App 现在既然你理解了一个app的四个主要部分,你可以开始打包并发布你自己的app的历程了.当你打包app时,主要将Web部署包.数据库包.SP解决方案包.app.manifest包含到.app文件中.然后你准备好发不到一个位置,让用户可以安装它.你可以发布一个app到私有app目录或者公共SP商店.下面部分带你了解发布到私有app目录,然后第8章节讨论发布到公

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 本章你将学到: 打包你创建的应用程序: 部署每个SP应用程序类型: 创建私有app目录.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 剖析App

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 剖析App 对于任何SP2013 apps,要部署并应用到任何人,它们必须首先打包成.app包,即Open Packaging Convention(OPC)包,并因此形似Zip文件.如果你重命名为.zip拓展名,你可以打开,并抽取它们,正如打开其他zip文件一样.OPC包格式已完全记录并标准化.