{"id":7,"date":"2008-02-27T23:40:57","date_gmt":"2008-02-27T23:40:57","guid":{"rendered":"http:\/\/jcrawfor74.wordpress.com\/?p=4"},"modified":"2012-07-10T00:07:29","modified_gmt":"2012-07-09T14:07:29","slug":"bootstrap-manifest-generator-how-to-custom-pre-requisites","status":"publish","type":"post","link":"https:\/\/ntsblog.homedev.com.au\/index.php\/2008\/02\/27\/bootstrap-manifest-generator-how-to-custom-pre-requisites\/","title":{"rendered":"Bootstrapper Manifest Generator &#8211; How To  Setup Custom Pre-Requisites"},"content":{"rendered":"<div id=\"ntsbl-3517944109\" class=\"ntsbl-before-content ntsbl-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-6288941070289539\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:inline-block;width:728px;height:90px;\" \ndata-ad-client=\"ca-pub-6288941070289539\" \ndata-ad-slot=\"9356781486\"><\/ins> \n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div><p><b>Edit March 2011<\/b><br \/>\nI have just done a newer version of this page, with pictures, you may want to check it out here<br \/>\n<a href=\"https:\/\/ntsblog.homedev.com.au\/index.php\/2011\/03\/03\/bootstrap-manifest-generator-2008-how-to-guide-v2\">BootStrapper Manifest Generator (2008) &#8211; How To Guide v2<\/a><\/p>\n<p><b>Original Post  Feb 2008 Continued&#8230;<\/b><\/p>\n<p>Recently I was attempting to create a deployment package that has customised pre-requisites i.e I wanted my installer to detect if AJAX Extensions 1.0 was installed and if not ask the user to install it.<\/p>\n<p>I found this link talking about how to do it..<\/p>\n<p><a href=\"http:\/\/www.codeplex.com\/MSAjax10SetupPrereq\"><span style=\"color:#014982;\"> <\/span><\/a><a href=\"http:\/\/www.codeplex.com\/MSAjax10SetupPrereq\">http:\/\/www.codeplex.com\/MSAjax10SetupPrereq<\/a><\/p>\n<p>Which lead me to download the Bootstapper Manifest generator from <a href=\"http:\/\/code.msdn.microsoft.com\/bmg\">http:\/\/code.msdn.microsoft.com\/bmg<\/a><\/p>\n<p>I was a bit lost with what to do&nbsp;so hopefully this will save you the pain I went though.<\/p>\n<p>(Note: the BMG is really buggy.&nbsp;Most of the&nbsp;system checks don&#8217;t work, and once you add a file system check and save your project you can no longer open your bootstrap project. But given it is free it&#8217;s better than attempting to write the XML by hand)<\/p>\n<div>As an example&nbsp;to create a pre-requisite for AJAX follow these steps:<\/div>\n<ol>\n<li>\n<div>Run the BMG tool.<\/div>\n<\/li>\n<li>\n<div>Create a new Package Manifest. Give it a name, AJAX<\/div>\n<\/li>\n<li>\n<div>Add a file, choose the AJAX Extension installer .msi.<\/div>\n<\/li>\n<li>\n<div>Give it a name, this will be the name that appears in your installer so make it something nice like &#8220;Microsoft ASP .Net 2.0 AJAX Extensions 1.0&#8221;<\/div>\n<\/li>\n<li>\n<div>Build it.<\/div>\n<\/li>\n<\/ol>\n<div>Now if it builds&nbsp;have a look at&nbsp;the location that it is written to, it is a visual studio directory, so I thought to myself it must&nbsp;integrate with VS2005.<\/div>\n<div>So open your Setup Project in visual studio, (in my case, a Web Setup Project). Right Click &#8212; Properties on the solution. There in the bottom right is&nbsp;the pre-requisite button.<\/div>\n<div>Click on it and you should now see AJAX as an option.<\/div>\n<div><strong>Traps for young players<\/strong><\/div>\n<div><strong>1. Copy paste<\/strong><\/div>\n<div><strong> <\/strong><\/div>\n<div>Inside the BGM copy and paste does not appear to work. The trick, is right click in the field and choose paste.<\/div>\n<div><strong> <\/strong><\/div>\n<div><strong>2. Download from web Option<\/strong><\/div>\n<div>If you want to download from the web enter the url for the .exe. I setup my own publicly available spot to allow downloading these pre-requesites (rather than relying on the microsoft download site), as they might change things. So I have a known static location to go download the AJAX Extensions msi.<\/div>\n<div><strong>3. System Checks<\/strong><\/div>\n<div><strong> <\/strong><\/div>\n<div>You should include a check to see whether AJAX is already installed.<\/div>\n<div>In your manifest click on the file you added, and go to the &#8220;System Checks&#8221; tab. I found that most of the system checks did not work properly.<\/div>\n<div>I found the one that did work was a file check, so I added a file check for System.Web.Extensions.dll in the default location<\/div>\n<ul>\n<li>\n<div>Add a&nbsp;File check. Set the file name to System.Web.Extensions.dll, turn off the search, and enter the default path to the ASP Net folder.<\/div>\n<\/li>\n<li>\n<div>Switch to the &#8220;Install Conditions&#8221; tab and add a line that says:<\/div>\n<ul>\n<li>\n<div>Type &#8211;&nbsp;By Pass If<\/div>\n<\/li>\n<li>\n<div>Property&nbsp;&#8211;&nbsp;AJAX (or the name you gave your system check)<\/div>\n<\/li>\n<li>\n<div>Comparison&nbsp;&nbsp;&#8211; Exists<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Cheers and Good luck<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Edit March 2011 I have just done a newer version of this page, with pictures, you may want to check it out here BootStrapper Manifest [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,6],"tags":[16,31],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-ajax","category-code","tag-bootstrap","tag-c"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ntsblog.homedev.com.au\/index.php\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}