アップグレード・アドオンの作成
UpgradeAddOn オブジェクトを使用すると、古いアドオンを現在の上位互換のバージョンに移動できます。
アドオンのアップグレードは、いくつかの違いを除き、AddOn オブジェクトの作成とほぼ同じです。1 つ目の違いとして、Addon から継承される SupersededAddOnIds プロパティーは、UpgradeAddOn オブジェクトでは使用されません。2 つ目として、UpgradeAddOn オブジェクトには、設定する必要がある FromVersion と ToVersion の 2 つの追加プロパティーがあり、このどちらも IdList オブジェクトを取ります。Java™ と C# の例に示すように、2 つの IdList オブジェクトが作成されます。一方は、現在インストール済みでこれからアップグレードするアドオンのリストで、もう一方は既存のアドオンを置き換える新しいアドオンのリストです。
新しい UpgradeAddOn オブジェクトは、保存されるとドメインの Global Configuration Database (GCD) に登録されます。UpgradeAddOn オブジェクトで参照される新しいアドオンは、UpgradeAddOn オブジェクトをオブジェクト・ストアにインストールする前にドメインの GCD に登録しなければならないことに注意してください。
Java の例
public void createUpgradeAddon(Domain domain)
{
// Upgrade AddOn オブジェクトを作成
UpgradeAddOn UAO = Factory.UpgradeAddOn.createInstance(domain,
new Id("{1dbfc769-d033-46dc-804f-ad603fa07282}") );
// Create list with installed add-ons to be upgraded.
IdList fromList = Factory.IdList.createList();
fromList.add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000a}") );
fromList.add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000b}") );
fromList.add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000c}") );
// Create list with new add-ons that will replace existing add-ons.
IdList toList = Factory.IdList.createList();
toList.add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9a}") );
toList.add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9b}") );
toList.add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9c}") );
// インポートするアップグレード・データの FileInputStream を作成し、
// それを UpgradeAddOn オブジェクトで設定
File importDataset = new File("C:¥¥temp¥¥Upgrade_v1_to_v2.xml");
// Windows 以外: File importDataset = new File("/tmp/Upgrade_v1_to_v2.xml");
FileInputStream fis = null;
try
{
fis = new FileInputStream(importDataset);
}
catch (FileNotFoundException fnfe)
{
fnfe.printStackTrace();
}
UAO.setImportDataStream(fis);
// UpgradeAddOn オブジェクトのプロパティーを設定
UAO.set_FromVersions(fromList);
UAO.set_ToVersions(toList);
UAO.set_AddOnType(AddOnType.OPTIONAL);
UAO.set_DisplayName("Upgrade_v1_To_v2");
UAO.set_DescriptiveText("Updates classes and properties added by addon v1 to required functionality provided by addon v2, and adds new classes and properties as appropriate.");
UAO.set_Creator("CEMP Integrators");
UAO.save(RefreshMode.REFRESH);
}
C# の例
public void createUpgradeAddon(IDomain domain)
{
// UpgradeAddOn オブジェクトを作成
IUpgradeAddOn UAO = Factory.UpgradeAddOn.CreateInstance(domain,
new Id("{1dbfc769-d033-46dc-804f-ad603fa07282}"));
// Create list with installed add-ons to be upgraded.
IIdList fromList = Factory.IdList.CreateList();
fromList.Add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000a}"));
fromList.Add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000b}"));
fromList.Add(new Id("{ce400add-aaaa-bbbb-cccc-00000000000c}"));
// Create list with new add-ons that will replace existing add-ons.
IIdList toList = Factory.IdList.CreateList();
toList.Add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9a}"));
toList.Add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9b}"));
toList.Add(new Id("{70f5fb79-32fb-412f-930f-ce5d40fa5c9c}"));
// インポートするアップグレード・データの Stream を作成し、
// それを IUpgradeAddOn オブジェクトで設定
Stream fileStream = File.OpenRead("C:¥¥temp¥¥Upgrade_v1_to_v2.xml");
UAO.SetImportDataStream(fileStream);
// IUpgradeAddOn オブジェクトのプロパティーを設定
UAO.FromVersions = fromList;
UAO.ToVersions = toList;
UAO.AddOnType = AddOnType.OPTIONAL;
UAO.DisplayName = "Upgrade_v1_To_v2";
UAO.DescriptiveText = "Updates classes and properties added by addon v1 to required functionality provided by addon v2, and adds new classes and properties as appropriate.";
UAO.Creator = "CEMP Integrators";
UAO.Save(RefreshMode.REFRESH);
}