【发布时间】:2012-01-13 07:21:06
【问题描述】:
Package Creator 的最佳实践是需要另一个包的依赖项,即 Forms Rendering 包,或者安装所需的依赖项。配置包可从 Package Creator 获得,但如果一个包有许多配置项,这将显得乏味。
【问题讨论】:
标签: c1-cms
Package Creator 的最佳实践是需要另一个包的依赖项,即 Forms Rendering 包,或者安装所需的依赖项。配置包可从 Package Creator 获得,但如果一个包有许多配置项,这将显得乏味。
【问题讨论】:
标签: c1-cms
Composite C1 Package Creator (v.3.3) 的当前版本没有通过 UI 指定所需包的功能。我建议您为此注册一个功能请求并描述您的需求。您可以在http://compositec1.codeplex.com/workitem/list/basic上使用“创建新项目”
编写自定义验证逻辑
通过一些 C# 开发,您可以将此检查添加到包中。 C1 软件包系统基于“安装程序插件”,可在安装前验证状态并执行安装工作。您可以编写这样的“安装程序插件”并使其验证所需 C1 包的存在,然后将您的插件与您的包关联。
创建一个继承自的类
Composite.Core.PackageSystem.PackageFragmentInstallers.BasePackageFragmentInstaller
覆盖 Install() 和 Validate() - 将您的验证放入 Validate() 并返回一个或多个 PackageFragmentValidationResult 如果您的验证失败。让 Install() 简单地返回。
在 packages install.xml 文件中注册新的“片段安装程序”类 - 在根元素中添加这样的部分:
<mi:PackageFragmentInstallerBinaries> <mi:Add path="~/MyAssembly.dll"/> </mi:PackageFragmentInstallerBinaries>
在您将程序集添加到 zip 时路径指向程序集的位置。
在现有的<PackageFragmentInstallers /> 元素中,使用<mi:Add installerType="MyFragmentInstallers.MyValidator, MyFragmentInstallers"/> 之类的元素添加对继承自BasePackageFragmentInstaller 的类的调用
这样做将使 Composite C1 调用您的 Validate() 方法作为包安装的一部分,并在返回任何验证消息时提醒用户。
检测是否安装了软件包
如果你知道一个包的ID,你可以使用Composite.Core.PackageSystem.PackageManager.IsInstalled(Guid packageId)检查它是否已经安装。
【讨论】: