Текущая версия Composite C1 Package Creator (v.3.3) не имеет функций для указания необходимых пакетов через пользовательский интерфейс. Я предлагаю вам зарегистрировать запрос функции для этого и описать ваши потребности. Вы можете использовать «Создать новый предмет» на http://compositec1.codeplex.com/workitem/list/basic
Написание пользовательской логики проверки
В некоторых разработках на C # вы можете добавить эту проверку в пакет. Система C1 Package основана на «плагинах установщика», которые проверяют состояние перед установкой и выполняют установку. Вы можете написать такой «плагин установщика» и сделать так, чтобы он проверял наличие необходимого пакета C1, а затем связать ваш плагин с вашим пакетом.
Создать класс, который наследуется от
Composite.Core.PackageSystem.PackageFragmentInstallers.BasePackageFragmentInstaller
Переопределить Install () и Validate () - поместите свою проверку в Validate () и верните один или несколько PackageFragmentValidationResult, если ваша проверка не пройдена. Пусть Install () просто вернется.
Зарегистрируйте ваш новый класс 'фрагментного установщика' в файле пакетов install.xml - добавьте раздел, подобный этому, в корневой элемент:
<mi:PackageFragmentInstallerBinaries> <mi:Add path="~/MyAssembly.dll"/> </mi:PackageFragmentInstallerBinaries>
где путь указывает на вашу сборку, когда вы добавили ее в zip.
Внутри существующего элемента <PackageFragmentInstallers />
добавьте вызовы в ваш класс, унаследованные от BasePackageFragmentInstaller
, используя такой элемент, как <mi:Add installerType="MyFragmentInstallers.MyValidator, MyFragmentInstallers"/>
В результате этого Composite C1 вызовет ваш метод Validate () в процессе установки пакета и предупредит пользователя, если будут возвращены какие-либо сообщения проверки.
Определение, установлен ли пакет
Если вам известен идентификатор пакета, вы можете проверить, был ли он установлен с помощью Composite.Core.PackageSystem.PackageManager.IsInstalled(Guid packageId)
.