包创建者 - 需要依赖关系

时间:2011-12-05 14:59:29

标签: c1-cms

Package Creator要求另一个包的依赖项(即Forms Rendering包)或安装所需的依赖项的最佳做法是什么。配置包可以从Package Creator获得,但是如果包有很多配置项,这看起来很乏味。

1 个答案:

答案 0 :(得分:2)

Composite C1 Package Creator(v.3.3)的当前版本没有通过UI指定所需包的功能。我建议你注册一个功能请求,并描述你的需求。您可以使用http://compositec1.codeplex.com/workitem/list/basic

上的“创建新项目”

编写自定义验证逻辑

通过一些C#开发,您可以将此检查添加到包中。 C1 Package系统基于“安装程序插件”,可在安装前验证状态并执行安装工作。您可以编写这样的“安装程序插件”,并使其验证所需的C1包的存在,然后将您的插件与您的包关联。

  1. 创建一个继承自的类 Composite.Core.PackageSystem.PackageFragmentInstallers.BasePackageFragmentInstaller

  2. 覆盖Install()和Validate() - 将验证放入Validate()并返回一个或多个PackageFragmentValidationResult,验证失败。让Install()简单地返回。

  3. 在package install.xml文件中注册新的'fragment installer'类 - 在根元素中添加这样的部分:

    <mi:PackageFragmentInstallerBinaries> <mi:Add path="~/MyAssembly.dll"/> </mi:PackageFragmentInstallerBinaries>

    当您将程序集添加到zip中时,路径指向程序集。

  4. 在现有的<PackageFragmentInstallers />元素中,使用BasePackageFragmentInstaller

  5. 之类的元素添加对从<mi:Add installerType="MyFragmentInstallers.MyValidator, MyFragmentInstallers"/>继承的类的调用

    执行此操作将使Composite C1在包安装过程中调用Validate()方法,并在返回任何验证消息时提醒用户。

    检测是否已安装软件包

    如果您知道软件包的ID,可以使用Composite.Core.PackageSystem.PackageManager.IsInstalled(Guid packageId)检查软件包是否已安装。