第一世代および第二世代の管理パッケージの転送アップグレード用のインストール後スクリプトのサンプル
第一世代および第二世代の管理パッケージの転送アップグレード用のインストール後スクリプトのサンプル
パッケージの既存ユーザーに新規コンポーネントを自動的に割り当てます。
インストール後 Apex スクリプトの作成についての詳細は、「Run Apex on Package Install/Upgrade (パッケージのインストール/アップグレード時の Apex の実行)」を参照してください。
このサンプルスクリプトでは、パッケージアップグレードに新しい Visualforce ページと、これらのページへのアクセス権を付与する新規権限セットが含まれています。スクリプトは、次のアクションを実行します。
- パッケージの古いバージョンの Visualforce ページの ID を取得する
- それらのページへのアクセス権を持つ権限セットを取得する
- これらの権限セットに関連付けられたプロファイルのリストを取得する
- それらのプロファイルに割り当てられたユーザーのリストを取得する
- 新規パッケージ内の権限セットをそれらのユーザーに割り当てる
1global class PostInstallClass implements InstallHandler {
2 global void onInstall(InstallContext context) {
3
4 //Get the Id of the Visualforce pages
5 List<ApexPage> pagesList = [SELECT Id FROM ApexPage WHERE NamespacePrefix =
6 'TestPackage' AND Name = 'vfpage1'];
7
8 //Get the permission sets that have access to those pages
9 List<SetupEntityAccess> setupEntityAccessList = [SELECT Id,
10 ParentId, SetupEntityId, SetupEntityType FROM SetupEntityAccess
11 WHERE SetupEntityId IN :pagesList];
12 Set<ID> PermissionSetList = new Set<ID> ();
13
14 for (SetupEntityAccess sea : setupEntityAccessList) {
15 PermissionSetList.add(sea.ParentId);
16 }
17 List<PermissionSet> PermissionSetWithProfileIdList =
18 [SELECT id, Name, IsOwnedByProfile, Profile.Name,
19 ProfileId FROM PermissionSet WHERE IsOwnedByProfile = true
20 AND Id IN :PermissionSetList];
21
22 //Get the list of profiles associated with those permission sets
23 Set<ID> ProfileList = new Set<ID> ();
24 for (PermissionSet per : PermissionSetWithProfileIdList) {
25 ProfileList.add(per.ProfileId);
26 }
27
28 //Get the list of users who have those profiles assigned
29 List<User> UserList = [SELECT id FROM User where ProfileId IN :ProfileList];
30
31 //Assign the permission set in the new package to those users
32 List<PermissionSet> PermissionSetToAssignList = [SELECT id, Name
33 FROM PermissionSet WHERE Name='TestPermSet' AND
34 NamespacePrefix = 'TestPackage'];
35 PermissionSet PermissionSetToAssign = PermissionSetToAssignList[0];
36 List<PermissionSetAssignment> PermissionSetAssignmentList = new List<PermissionSetAssignment>();
37 for (User us : UserList) {
38 PermissionSetAssignment psa = new PermissionSetAssignment();
39 psa.PermissionSetId = PermissionSetToAssign.id;
40 psa.AssigneeId = us.id;
41 PermissionSetAssignmentList.add(psa);
42 }
43 insert PermissionSetAssignmentList;
44 }
45}1// Test for the post install class
2@isTest
3private class PostInstallClassTest {
4 @isTest
5 public static void test() {
6 PostInstallClass myClass = new PostInstallClass();
7 Test.testInstall(myClass, null);
8 }
9}