对于Package Creator来说,最好的做法是要么需要另一个包的依赖项,比如Forms Rendering包,要么安装所需的依赖项。配置包可以从Package Creator中获得,但是如果一个包有许多配置项,那就显得很繁琐了。
当前版本的Composite C1 Package Creator (v.3.3)没有通过UI指定所需包的特性。我建议您为此注册一个功能请求并描述您的需求。您可以使用'创建新项目'在http://compositec1.codeplex.com/workitem/list/basic
编写自定义验证逻辑
通过c#开发,你可以将这个检查添加到包中。C1 Package系统基于"安装程序插件",它在安装前验证状态并执行安装工作。您可以编写这样一个"安装程序插件",并使其验证所需的C1包的存在,然后将插件与包关联起来。
-
创建继承自的类
Composite.Core.PackageSystem.PackageFragmentInstallers.BasePackageFragmentInstaller
-
Override Install()和Validate() -将您的验证放入Validate()并返回一个或多个PackageFragmentValidationResult是您的验证失败。
-
在package install.xml文件中注册新的'fragment installer'类-在根元素中添加这样的部分:
<mi:PackageFragmentInstallerBinaries> <mi:Add path="~/MyAssembly.dll"/> </mi:PackageFragmentInstallerBinaries>
-
在现有的
<PackageFragmentInstallers />
元素中,通过使用<mi:Add installerType="MyFragmentInstallers.MyValidator, MyFragmentInstallers"/>
这样的元素来添加对继承自
BasePackageFragmentInstaller
的类的调用这样做将使Composite C1调用您的Validate()方法作为包安装的一部分,并在返回任何验证消息时提醒用户。
检测软件包是否已安装
如果你知道一个包的ID,你可以使用Composite.Core.PackageSystem.PackageManager.IsInstalled(Guid packageId)
检查它是否已经安装。