AppExchange is hiring! 日本語

Packaging Overview

1

Creating Your Developer Edition Org and AppExchange Profile

In order to create your custom app, you needed to sign up for a salesforce.com Developer Edition org. Similarly, in order to package your custom app for private or public sharing, you'll need to register your Developer Edition org with the AppExchange. To do so, log in to AppExchange using the login name and password credentials of your salesforce.com Developer Edition org.

NOTE: When registering your app with the AppExchange, be sure to use the login credentials for the org you used to create your app. This links your app with the AppExchange profile you will create to manage the AppExchange listing for that specific app.

This login will be assigned to and associated with any packages that you create from a single Salesforce org, and is referred to as your AppExchange Profile. If you have multiple salesforce.com developer accounts that you access using differing salesforce.com developer credentials, you can create a single AppExchange profile for each developer account.

NOTE: You can develop an app and create an unmanaged package in any Salesforce org, however, you can only create a managed package in a Developer Edition org. For more information, see About Managed and Unmanaged Packages.

Your AppExchange profile allows you to assume two roles:

  • Developer. You manage the apps you developed in your salesforce.com Developer Edition account and register them in your associated AppExchange developer account.
  • Publisher. In this optional role, you can publish any number of apps on the AppExchange. As the AppExchange Developer, you can delegate the role of Publisher to another person who has an AppExchange profile.

In both roles, you are known to the AppExchange by your AppExchange profile, which is based on your salesforce.com login credentials. These roles are discussed in more detail in the AppExchange Publishing Guide.

About Managed and Unmanaged Packages

Before you package your app, you should understand some basics about packages. There are two types of packages: managed and unmanaged. If you packaged an app or components before the Winter '07 release, you created an unmanaged package. If you are packaging a new or updated app, in most cases you will create a managed package. In a few cases you may choose to create an unmanaged package. It's important that you understand the differences between managed and unmanaged packages because the development lifecycle differs for apps deployed using managed and unmanaged packages. For example, it's very important to carefully beta test apps deployed using managed packages before they are released to production. To learn more about the managed package lifecycle, read the best practice tip sheet, and refer to the topics about managed packages in the Salesforce online help.

Unmanaged packages are completely editable in both the installer's and developer's org, are not upgradeable, and do not include locked components. All packages are unmanaged unless otherwise indicated in Salesforce. In the Salesforce application, a managed package is identified by one of the following managed icons, which reflects the state of the managed package:

Developer's Org:
Managed - Beta
Managed - Released

Installer's Org:
Managed - Installed

Managed packages are AppExchange packages that can be upgraded in the installer's org. They differ from unmanaged packages in that some components are locked, ensuring a smooth upgrade process. A publisher can convert an unmanaged package to managed, upload it to the AppExchange directory, and notify installers whenever new versions are available. Only non-destructive changes can be made to a managed package once it has been released. This means the developer can make future enhancements and the customers can customize the package, but neither can make destructive changes.

To learn more about how specific components are locked in managed packages, login to your Salesforce application and see the online help topic about Properties of Managed Components.

Use managed packages when you want to:

  • Develop and release upgrades to your package
  • Publish your app on the AppExchange directory (this requires review and approval by the Application Review Board)
  • Track installs, upgrades, and uninstalls in real time through the License Management app
  • Limit component name collisions on install and upgrade

Use unmanaged packages when you want to:

  • Provide and share templates that do not need to be upgraded
  • Move your customizations between different Salesforce orgs (for example from Salesforce Sandbox to production).

Managed packages differ from unmanaged packages in many other ways, as shown in Table 1.

Capability or Requirement Package Type
Managed Unmanaged
App is upgradeable Yes No
Uses License Management app integration
  • Tracks and records customer installs and uninstalls
  • Creates customer lead record upon each install
  • Stores a record of licenses of all installs in Salesforce
Yes No
Specific components are locked in order to offer reliable upgrades. Yes No
Uses and requires automated unique namespace prefix
NOTE: Once a unique namespace is chosen, it cannot be changed.
Yes No
Package must be created in a Developer Edition account
NOTE: Each Developer Edition account can contain a single managed package and many unmanaged packages
Yes No
Provides beta version capability Yes No
Can be enhanced using package extensions Yes No
Requires review and approval by the Application Review Board to be publicly listed Yes Yes
Table 1. A Comparison of managed and unmanaged packages

Creating a managed package is just as easy as creating an unmanaged package, but it requires a few customizations in your organization first. The only requirement for enabling your Salesforce organization to create managed packages is that you are using a Developer Edition org.

To customize your Salesforce Developer Edition org to create managed packages, first click Setup at the top of your app's home page. When the App Setup menu appears on the left side of the page, click Exchange, then Shared Apps. On the Package List page, click Edit to configure your Developer Settings to specify your namespace prefix as well as indicate the Salesforce org you want to use for license management.

To enable your org for license management, you'll install the License Management app from www.appexchange.com. The Salesforce org you want to use for license management needs to have the License Management app installed before you can link it to your developer account. The License Management app is a free AppExchange app built by salesforce.com. It allows you to track which customers have which version of your app, giving you a means of distributing information about upgrades.

The License Management app can be installed in any Salesforce Developer, Enterprise or Unlimited edition org. Although the License Management app can be installed in the same Salesforce org that you use to create or upload your app package, it's a best practice to keep the two orgs separate and have the License Management app installed in your production salesforce.com environment.

WARNING: The three required Developer Edition settings (namespace prefix, the managed package in the org, and the License Management org) cannot be changed in the Developer Edition org once they have been set. In addition, once you install the License Management app into any org, regardless of edition, that app cannot be uninstalled and no other org can become your License Management org.

You can use the same License Management app to manage an unlimited number of your managed packages in different Developer Edition orgs. To learn about creating managed packages, login to your Salesforce application and see the online help topics about managed packages.