この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Salesforce AppExchange アプリケーションへの Visualforce の追加

Visualforce ページ、コンポーネント、またはカスタムコントローラを、AppExchange 用に作成するアプリケーションに含めることができます。

Apex クラスとは異なり、管理パッケージにおける Visualforce ページのコンテンツは、パッケージがインストールされている場合は非表示になりません。ただし、カスタムコントローラ、コントローラ拡張、およびカスタムコンポーネントは非表示になります。さらに、access 属性によって、カスタムコンポーネントがご使用の名前空間でのみ実行されるように制限できます。

Salesforce は、Visualforce コンポーネントまたは Apex コンポーネントを配布する場合にのみ管理パッケージを使用することをお勧めします。これは、管理パッケージが、ページ、コンポーネント、クラス、メソッド、変数などの名前の先頭に自動的に追加される固有の名前空間を受け取るためです。この名前空間のプレフィックスによって、インストーラの組織内で名前が複製されることを防ぐことができます。

Visualforce ページを使用してパッケージを作成する場合は、次の警告を考慮する必要があります。
  • 管理パッケージに含められるコンポーネントの access 属性が global に設定されている場合は、次の制限事項に注意してください。
    • コンポーネントの access 属性は public に変更できません。
    • すべての必須の子 <apex:attribute> コンポーネント (true に設定された必須属性を持つコンポーネント) の access 属性は global に設定されている必要があります。
    • 必須の子 <apex:attribute>default 属性が設定されている場合、それを削除または変更することはできません。
    • 新規の必須の子 <apex:attribute> コンポーネントを追加することはできません。
    • <apex:attribute> コンポーネントの access 属性が global に設定されている場合、その属性を public に変更することはできません。
    • <apex:attribute> コンポーネントの access 属性が global に設定されている場合、type 属性を変更することはできません。
  • global でないコンポーネントを持つパッケージがインストールされている場合は、ユーザがそのコンポーネントを [設定] で表示しようとすると、コンポーネントのコンテンツの代わりに「Component is not global (コンポーネントは global ではありません)」と表示されます。さらに、コンポーネントはコンポーネントの参照に含まれません。
  • パッケージをインストールする組織で高度な通貨管理が有効になっている場合、<apex:inputField><apex:outputField> を使用する Visualforce ページはインストールできません。
  • Salesforce AppExchange アプリケーションの一部として含まれる Apex は、いずれも累積テストカバー率が 75% 以上である必要があります。パッケージを AppExchange にアップロードすると、すべてのテストが実行され、エラーがない状態で実行されていることが確認されます。テストは、パッケージがインストールされている場合にも実行されます。
  • バージョン 16.0 以降、管理された global Apex クラスを Visualforce コントローラとして使用している場合、登録者が次のメソッドとプロパティを使用できるように、これらのアクセスレベルを global に設定する必要があります。
    • カスタムコントローラのコンストラクタ
    • 入力および出力コンポーネント用などの getter メソッドと setter メソッド
    • プロパティの get 属性と set 属性

カスタム表示ラベルが翻訳されている場合、必要な言語を明示的にパッケージ化することによって翻訳をパッケージに含めます。

ヒント

Visualforce ページを含むパッケージが組織にインストールされている場合、ページは、salesforce.com ドメインではなく、vf.force.comvisual.force.com、または visualforce.com ドメインから配信されます。これにより、パッケージの悪意のあるコードがデータに影響を与えるのを回避します。