{"id":1207,"date":"2017-12-04T05:14:39","date_gmt":"2017-12-04T05:14:39","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/?p=1207"},"modified":"2020-01-09T09:35:22","modified_gmt":"2020-01-09T09:35:22","slug":"organizing-features-and-components-in-installanywhereorganizing-features-and-com","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/organizing-features-and-components-in-installanywhereorganizing-features-and-com\/","title":{"rendered":"Organizing Features and Components in InstallAnywhereOrganizing Features and Com"},"content":{"rendered":"<p><strong>deployexpert created the topic: Organizing Features and Components in InstallAnywhereOrganizing Features and Com<\/strong><br \/>\nComponents are the lowest level of organization in an installer. Each product must<br \/>\nhave at least one component but most installers will by default contain at least two<br \/>\ncomponents, as the uninstaller is considered a component of its own.<br \/>\nInstallAnywhere\u2019s component architecture is designed to allow developers to plan for<br \/>\nfuture releases, suite installers, and other uses of their software elements in their<br \/>\ndeployment plan.<br \/>\nInstallAnywhere will automatically create components as you add files to your project<br \/>\nand assign them to Features. This approach, while working well for most projects,<br \/>\ndoes not give you the most flexibility. To realize the ultimate benefits of<br \/>\ncomponentized software, you should manually manage the creation of components.<\/p>\n<p><strong>deployexpert replied the topic: Re: Organizing Features and Components in InstallAnywhereOrganizing Features and<\/strong><br \/>\nBest Practices for Components<br \/>\nWhen using components, first determine and organize which components to add.<br \/>\nA few things to keep in mind:<br \/>\nMake unique components for files that will need to be updated separately. For<br \/>\nexample, a \u201cHelp\u201d feature, may have both a User Guide and Javadocs. However, the<br \/>\nUser Guide may be updated more frequently than the Javadocs. Make the two items<br \/>\nseparate components so a unique \u201cUser Guide\u201d component may be added which can<br \/>\nbe versioned and updated individually.<br \/>\nComponents should make logical sense. When building a Suite Installer, keep in mind<br \/>\nthe pieces of applications that are shared between different products. When<br \/>\ncomponentizing a product for versioning purposes, designate the version of the<br \/>\ncomponent in the Organization | Component | Properties task when the component is<br \/>\nadded.<\/p>\n<p>Adding Components<br \/>\nComponents are managed in the Organization | Components task. Each component is<br \/>\ncreated with a long Name, a Short Name, and a Unique ID. The Version, and Key File<br \/>\nmay be specified. Key Files are single files that are a core part of the component which<br \/>\nidentify the component. A Key File should be a file that will always be included in a<br \/>\ncomponent.<br \/>\nAssigning Files to Components<br \/>\nTo assign files to a component, use the Assign Files to Components option in the<br \/>\nInstall task to assign files to the components.<\/p>\n<p>Removing Empty Components<br \/>\nSometimes you may have components that are no longer needed or do not have any<br \/>\nfiles assigned to them. To remove empty components from the project click Clean<br \/>\nComponents in the Organization | Components task.<\/p>\n<p>Integrating Components Already Installed on<br \/>\nTarget System<br \/>\nIf the installer needs a component that should already be installed on the target<br \/>\nsystem, use the Find Component in Registry action to locate that component. This<br \/>\naction searches for the component by using the UUID, the unique identifier specified<br \/>\nfor the component. The component\u2019s location can then be used as an installation<br \/>\nlocation by the installer.<br \/>\nThe installer can compare versions and locate the highest version found. The key file<br \/>\nmay also be searched for.<\/p>\n<p>Adding Features<br \/>\nFeatures are managed in the Organization | Features task. You can add and remove<br \/>\nFeatures, as well as assign Features to Install Sets.<\/p>\n<p>Assigning Components to Features<br \/>\nYou can manually assign Components to Features on the Organization | Components<br \/>\ntask, or you can assign Files to Features directly, which creates the Feature to<br \/>\nComponent assignments automatically. If you assign a file to a Feature that does not<br \/>\nalready have a Component, a Component will be created automatically for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>deployexpert created the topic: Organizing Features and Components in InstallAnywhereOrganizing Features and Com Components are the lowest level of organization in an installer. Each product must have at least one&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[49],"tags":[296],"class_list":["post-1207","post","type-post","status-publish","format-standard","hentry","category-general","tag-features"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=1207"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1207\/revisions"}],"predecessor-version":[{"id":1208,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1207\/revisions\/1208"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=1207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=1207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=1207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}