{"id":101,"date":"2011-01-13T15:22:44","date_gmt":"2011-01-13T15:22:44","guid":{"rendered":"http:\/\/blogs.oucs.ox.ac.uk\/darrencollins\/?p=101"},"modified":"2024-04-10T10:06:46","modified_gmt":"2024-04-10T09:06:46","slug":"the-general-installer-progress","status":"publish","type":"post","link":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/2011\/01\/13\/the-general-installer-progress\/","title":{"rendered":"The General Installer (GInstaller)"},"content":{"rendered":"<p>I have finished the main coding of my &#8216;General Installer&#8217;. \u00a0Now we are applying it to live packages and it looks like it will become very useful indeed.<\/p>\n<p>We refer to it as &#8216;GInstaller&#8217; so that is now the name: GInstaller, short for General Installer.<\/p>\n<p>Some more information on GInstaller:<\/p>\n<h2>What is it?<\/h2>\n<p>GInstaller is a deployment tool to intelligently install programs and applications with full logging.\u00a0 It is a VBScript that acts on an input ini file.\u00a0 It can:<\/p>\n<ul>\n<li>Check if the install is required<\/li>\n<li>Check a number of pre-install conditions against criteria specified<\/li>\n<li>Execute a sequence of command lines acting on specific exit codes<\/li>\n<li>Set up a user self-install icon for them to install at their convenience<\/li>\n<li>Generate a \u2018hidden\u2019 re-install icon for IT Support staff<\/li>\n<li>Comprehensively log each step of the installation<\/li>\n<li>Email the log at the end to a specified email account<\/li>\n<li>Perform simple post install tasks such as creating \/ deleting registry values, deleting files and folders (e.g. delete extra shortcuts installed but not desired)<\/li>\n<\/ul>\n<p>GInstaller is designed to enable complex intelligent deployment of programs and applications without complex scripting knowledge (or any scripting knowledge at all!).<\/p>\n<h2>How is it used?<\/h2>\n<p>The GInstaller.vbs script and the associated, configured, GInstaller.ini file are placed into the folder with the packaged unattended installation files.<\/p>\n<p>The package folder should then be deployed to the local computer using the deployment tool of choice and the GInstaller.vbs called by the deployment tool from the local folder.<\/p>\n<p><a href=\"http:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/ginst.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-123\" src=\"http:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/ginst.png\" alt=\"General Installer use\" width=\"700\" height=\"506\" srcset=\"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/ginst.png 700w, https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/ginst-300x216.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>ICTST deploy the source locally prior to installation.\u00a0 There are pros and cons to this method, but we have found that for reducing problems and improving supportability, this is the best option for us.<\/p>\n<h2>Show me!<\/h2>\n<p>An example ini file can be viewed here:<\/p>\n<p><a href=\"http:\/\/users.ox.ac.uk\/~oucs0058\/res\/blog_oucs\/Sample_GInstaller.ini\">http:\/\/users.ox.ac.uk\/~oucs0058\/res\/blog_oucs\/Sample_GInstaller.ini<\/a><\/p>\n<p>This is not a working sample just a reference of all the options that can be used. \u00a0In practice a real example is less than half the length of this example.<\/p>\n<p>GInstaller is fully documented, but at this stage I can&#8217;t release the document to everyone. \u00a0(If you work for Oxford then I can let you have a copy of the document &#8211; just email me).<\/p>\n<p>As for releasing the GInstaller script itself &#8211; this is still very early days and little bugs are still popping up regularly. \u00a0In \u00a0the future I plan to release for open use. \u00a0Please contact me either by email or the comments section below if you are interested in hearing more.<\/p>\n<p>Below is an outline process flow chart of the General Installer:<\/p>\n<div id=\"attachment_110\" style=\"width: 728px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/General-Installer-flowchart.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-110\" class=\"size-full wp-image-110\" src=\"http:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/General-Installer-flowchart.png\" alt=\"General Installer flowchart\" width=\"718\" height=\"1244\" srcset=\"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/General-Installer-flowchart.png 718w, https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/General-Installer-flowchart-173x300.png 173w, https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/files\/2011\/01\/General-Installer-flowchart-591x1024.png 591w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/a><p id=\"caption-attachment-110\" class=\"wp-caption-text\">General Installer flowchart<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I have finished the main coding of my &#8216;General Installer&#8217;. \u00a0Now we are applying it to live packages and it looks like it will become very useful indeed. We refer to it as &#8216;GInstaller&#8217; so that is now the name: &hellip; <a href=\"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/2011\/01\/13\/the-general-installer-progress\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":68,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8374],"tags":[8385,331,8388,8381],"class_list":["post-101","post","type-post","status-publish","format-standard","hentry","category-work","tag-deployment","tag-general","tag-installer","tag-vbscript"],"_links":{"self":[{"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/posts\/101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/comments?post=101"}],"version-history":[{"count":25,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/posts\/101\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/posts\/101\/revisions\/322"}],"wp:attachment":[{"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/media?parent=101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/categories?post=101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs-new.it.ox.ac.uk\/darrencollins\/wp-json\/wp\/v2\/tags?post=101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}