Package Creator 的最佳实践是需要另一个包的依赖项,即 Forms Rendering 包,或者安装所需的依赖项。配置包可从 Package Creator 获得,但如果一个包有许多配置项,这将显得乏味。
1 回答
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 />
元素添加对继承自的类的调用BasePackageFragmentInstaller
<mi:Add installerType="MyFragmentInstallers.MyValidator, MyFragmentInstallers"/>
这样做将使 Composite C1 调用您的 Validate() 方法作为包安装的一部分,并在返回任何验证消息时提醒用户。
检测是否安装了软件包
如果你知道一个包的 ID,你可以检查它是否已经使用Composite.Core.PackageSystem.PackageManager.IsInstalled(Guid packageId)
.