The document discusses packaging and AppExchange listing for Salesforce applications. It provides an overview of packaging components and attributes, managed packages, running Apex scripts during install and uninstall, creating packages, and AppExchange listing documentation and security best practices. It also discusses choosing an installation option for distributing packages directly from AppExchange, from a website, or by contacting the distributor.
5. #jaipurDUG
A package is a container for something as small as an individual component or as large as a
set of related apps. After creating a package, you can distribute it to other Salesforce users
and organizations, including those outside your company.
Packages come in two forms:
▪ Unmanaged
▪ Managed
6. #jaipurDUG
Components: A component is one constituent part of a package. It defines an item, such as
a custom object or a custom field.
Attributes: An attribute is a field on a component, such as the name of an email
template or the Allow Reports checkbox on a custom object.
8. #jaipurDUG
Running Apex while Installing
▪ You can use the script to populate custom settings, create
sample data, send an email to the installer, notify an external
system, or kick off a batch operation
▪ You can only specify one post install script. It must be an
Apex class that is a member of the package.
▪ The post install script is invoked after tests have been run,
and is subject to default governor limits. It runs as a special
system user that represents your package.
9. #jaipurDUG
Running Apex while Uninstalling
▪ This makes it possible to perform cleanup and notification tasks
based on details of the subscriber’s organization.
▪ For simplicity, you can only specify one uninstall script. It must
be an Apex class that is a member of the package.
▪ If the script fails, the uninstall continues but none of the
changes performed by the script are committed. Any errors in
the script are emailed to the user specified in the Notify on
Apex Error field of the package
11. #jaipurDUG
Convert Unmanaged Packages to Managed
▪ Notify your current installers of how to save their data
– Export all the data from the previous, unmanaged version of the package.
– Uninstall the unmanaged package.
– Install the new managed version of the package.
– Import all the exported data into the new managed package.
▪ Convert an unmanaged package into a managed package
– Enable managed packages for your organization.
– From Setup, enter Packages in the Quick Find box, then select Packages.
– Edit the package that you want to make managed, then select Managed.
13. #jaipurDUG
AppExchange: The AppExchange is a sharing interface from
Salesforce that allows you to browse and share apps and services
for the Force.com platform.
License Management Application (LMA) : A free AppExchange app
that allows you to track sales leads and accounts for every user who
downloads your managed package (app) from the AppExchange.
License Management Organization (LMO): The Salesforce
organization that you use to track all the Salesforce users who install
your package. A license management organization must have the
License Management Application (LMA) installed
14. #jaipurDUG#jaipurDUG
Developing App Documentation
● Salesforce recommends publishing your app on
AppExchange with the following types of documentation:
○ Configure Option
○ Datasheet
○ Customization and Enhancement guide
○ Custom Help
#forcewebinar
15. #jaipurDUG
Publish your app on AppExchange
▪ If your listing is an app or component, connect your packaging
organization to the AppExchange
▪ Create a provider profile.
▪ Review tips for creating a listing that excites and engages customers.
▪ Create the listing.
▪ If your listing is an app or component, submit the package for security
review.
▪ After your app is approved, publish the listing on the AppExchange
▪ Review the analytics to see how your listing is performing.
16. #jaipurDUG
Salesforce Best Practices for Security Review
▪ All Classes in Sharing mode only
▪ No Reflected XSS or Cross Side scripting issues
▪ Enforcing CRUD/FLS
▪ No DML in action attribute of <apex:page>
▪ Javascript in Salesforce DOM
17. #jaipurDUG
Choose an Installation Option
▪ Directly from AppExchange
▪ From your Website
▪ Client should contact the distributor of Package