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