App for SharePoint の Autohosted から Provider-hosted への移行


こんにちは。

以前よりチームブログでアナウンスされていましたが、SharePoint Add-ins (旧 App for SharePoint) で Autohosted (自動ホスト型) は廃止されました。(デバッグ実行は可能ですが、配置・展開などはできません。)
このため、Autohosted で作成していた Remote App は、Provider-hosted (プロバイダー向けのホスト型) への Migration (移行) が必要です。
今回は、本件について多方面からご質問いただいてますので (全部にちゃんと回答できておらず、すみません)、以下に手順などを記載しておきます。

以下では、Office 365 (SharePoint Online) を想定して記述します。

 

Delivarables の構成

まず、手順を実施する前に、ベースの仕組みをちゃんと理解しておいてください。

以前、「Apps for SharePoint 2013 の動作と概要」でも解説しましたが、Autohosted では、クラウド上に発行される Web サイトや Database の情報を含んだ zip ファイルが .app パッケージとして作成され、SharePoint 上に配置されるタイミングで Microsoft Azure 上に Web サイトや Database が同時に展開されます。
一方、Provider-hosted の場合は、クラウド上に発行される Web サイトなどはあらかじめ自身で発行をおこなっておき、SharePoint 上には  zip ファイル (.app パッケージ) として、そのリンク情報だけが発行されます。

このため、Autohosted と Provider-hosted では、以下の通り、zip ファイル (.app パッケージ) に含まれるマニフェストの記述 (配置方法に関する記述) が根本的に異なっています。

<!-- Autohosted の Sample -->

<?xml version="1.0" encoding="utf-8"?>
<App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest"
  Name="SharePointApp1"
  ProductID="{2845ac88-6c74 . . .}"
  Version="1.0.0.0" SharePointMinVersion="15.0.0.0">
  <Properties>
    <Title>SharePointApp1</Title>
    <StartPage>~remoteAppUrl/Pages/Default.aspx?{StandardTokens}</StartPage>
  </Properties>
  <AppPrincipal>
    <AutoDeployedWebApplication />
  </AppPrincipal>
  <AppPrerequisites>
    <AppPrerequisite Type="AutoProvisioning" ID="RemoteWebHost" />
  </AppPrerequisites>
  . . .

</App>
<!-- Provider-hosted の Sample  -->

<?xml version="1.0" encoding="utf-8"?>
<App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest"
  Name="SharePointApp1"
  ProductID="{2845ac88-6c74 . . .}"
  Version="1.0.0.0"
  SharePointMinVersion="15.0.0.0">
  <Properties>
    <Title>SharePointApp1</Title>
    <StartPage>https://testapp01.azurewebsites.net/Pages/Default.aspx?{StandardTokens}</StartPage>
  </Properties>
  <AppPrincipal>
    <RemoteWebApplication ClientId="460ed0cc-535. . ." />
  </AppPrincipal>
  . . .

</App>

つまり、根本的に別の (異なる) コンポーネントとして構成されているので、インストール済みの App for SharePoint のアプリ (Autohosted のアプリ) は設定変更などで入れ替えるのではなく、いったん App の Uninstall をおこない、Install しなおす必要があります。(つまり、ソリューション Updragde は使用できません。)
以下の手順で入れ替えます。

  1. Autohosted で使用していた Remote App や Database を、すべて自身で発行しなおします。(Microsoft Azure などに発行します。)
  2. マニフェストを書き換え、パッケージ (.app ファイル) を作り直します。
  3. Autohosted の App をいったん Remove (下図) して、上記 2 で作ったパッケージをインストールしなおします。

Autohosted では Office Store (SharePoint Store) による提供はサポートされていないので、主に企業アプリや開発サンプルなどが多かったと思いますが、例えば、パッケージ (.app) などの形で顧客に配布していた場合には、新たに Multi-Tenant のための提供方法なども設計しなおす必要があるでしょう。

 

Provider-hosted アプリの Install

Autohosted では Office Store (SharePoint Store) による提供はサポートされていません。
このため、発行していたアプリは、App Catalog を通して発行された組織内アプリか、開発用途でクラウド上に発行したサンプル アプリか、あるいは Visual Studio からデバッグ実行によりインストールしていたアプリ (開発中のアプリ) のいずれかだったはずです。
Provider-hosted で構築した App をそれぞれの方法で Install する方法について、以下に記載します。

App Catalog から使用していた場合 :

App Catalog を通して企業内で利用していた場合には、以下の手順で Provider-hosted の App を入れなおしてください。(あらかじめ、Autohosted のアプリを Uninstall しておきます。)

  1. App Catalog のサイトの _layouts/15/appregnew.aspx を表示します。下図の画面が表示されます。
  2. 上図で [生成] ボタンを押して、Client Id, Client Secret を作成します。ここで作成した Client Id, Client Secret をメモ帳などにコピーしておきます。
  3. さらに、Provider-hosted のアプリを配置する先の domain や redirect url を上図に設定します。
  4. 上図の [作成] ボタンを押してアプリを登録します。
  5. Remote App (ASP.NET アプリケーション) の Web.config に、上記でコピーした Client Id, Client Secret をコピーします。(下記参照)
    なお、Office Store (SharePoint Store) に登録する際は、Store によりこの Client Id と Client Secret は発行されます。(今回は、Store の場合の手順は考慮しません。)
    <configuration>
    <system.web>
    <compilation debug=”true” targetFramework=”4.5″ />
    <httpRuntime targetFramework=”4.5″ />
    </system.web>
    <appSettings>
        <add key=”ClientId” value=”460ed0cc-535. . .” />
        <add key=”ClientSecret” value=”okGba8oU3t9J. . .” />
    </appSettings>
    . . .
  6. Remote App (および、Database など) をクラウド上 (Microsoft Azure など) に配置します。この際、上記で入力した domain や redirect url と同じ場所に発行してください。
    なお、Visual Studio 2013 を使用している場合は、App for SharePoint のプロジェクトを発行する際に、下図の通り、Web プロジェクトの発行もおこなえます。(下図の [Web プロジェクトを配置する] ボタンを押して発行します。Client Id と Client Secret の入力が必要です。)
  7. Visual Studio の Autohosted のプロジェクトを Provider-hosted のプロジェクトに変換します。(この手順は後述します。)
    そして、Visual Studio から Provider-hosted の App (App for SharePoint) プロジェクトを発行する際に表示される下図の画面で、[アプリをパッケージ化する] ボタンを押して App Packgae (.app) ファイルを作成します。
    なお、この際、アプリの Url と Client Id の入力が必要になるので、上記でコピーした内容を貼り付けてください。
  8. 上記で作成したアプリ (.app パッケージ) を App Catalog の [App for SharePoint] (SharePoint 用アプリ) ライブラリーにアップロードします。
  9. 以降の利用方法は、これまでの App Catalog と同様です。
    サイトの [Site Contents] (サイト コンテンツ) で [add an app] (アプリの追加) をクリックすると、上記のアプリを登録して各サイトで利用できます。

補足 : _layouts/15/appregnew.aspx で登録したアプリの内容を変更する場合は、_layouts/15/appinv.aspx を使用します。

Sideloading で Host していた場合 :

Developer Site (開発者向けサイト) の [Apps in Testing] (テスト中アプリ) ライブラリーから Sideloading を使って発行していた場合は、以下の手順で Provider-hosted のアプリを Install しなおします。(あらかじめ、Autohosted のアプリを Uninstall しておきます。)

  1. Developer Site (開発者向けサイト) に対して、上記の 1 – 7 と同じ手順を実施します。
  2. 作成したアプリ (.app パッケージ) を、Developer Site (開発者向けサイト) の [Apps in Testing] (テスト中アプリ) ライブラリーに発行します。(アプリがサイトに追加されます。)

補足 : 上記でアップロードされたアプリは App Package (アプリ パッケージ) ライブラリー (/Lists/AppPackages) に保存されています。

補足 : Developer Site (開発者向けサイト) 以外でも、Sideloading を有効にして Install していた場合には、同様に入れなおしてください。

Visual Studio からの Debug 実行の場合 :

Visual Studio でデバッグ実行 (F5) をおこなうと、Remote App (ASP.NET アプリケーション) は localhost で起動し、Visual Studio がデバッグ用に App を Install します。
この場合については、このあと説明する Project の変換 (Convert) の中で解説しますので、ここでは省略します。

 

上記で、Cloud に配置 (発行) する場合、Amazon、Google、Microosft Azure など、どこにホストしても構いません。ただし、Microsoft Azure に発行することで、Remote Debug や、Service Bus を使った Workflow の Debug など、Debug はやりやすくなります。

 

Visual Studio の Project の変換

作成済みの Visual Studio の Autohosted のプロジェクトを Provider-hosted に変換するのは簡単です。
AppManifest.xml をダブルクリックすると表示される下記の UI で、Autohosted (自動ホスト型) を Provider-hosted (プロバイダー向けのホスト型) に変更するだけです。

補足 : その他、プロジェクトにより、追加の変更も必要な場合がありますので注意してください。(プロジェクトによって異なります。)

変換後に F5 で Debug 実行をおこなうと、いままで通り localhost でアプリが起動して、App のデバッグ用のインストールがおこなわれ、デバッグ実行できます。

あとは、上記の手順で実際の Cloud 環境 (Azure など) にインストールすることができます。

 

参考情報 : [MSDN] How to Convert an autohosted app for SharePoint to a provider-hosted app
http://msdn.microsoft.com/en-us/library/office/dn722449(v=office.15).aspx

 

※ 変更履歴 :

2015/05/05  App for SharePoint (SharePoint 用アプリ) を SharePoint Add-ins (SharePoint アドイン) に名称変更

 


Comments (0)

Skip to main content