<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: My Installer Fixation And NSIS</title>
	<atom:link href="http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/feed/" rel="self" type="application/rss+xml" />
	<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/</link>
	<description>The personal website of John Conners, a Scotsman living in Yorkshire who loves photography and writes software for a living</description>
	<lastBuildDate>Tue, 07 Feb 2012 05:45:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Jeremy Thompson</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-2357</link>
		<dc:creator>Jeremy Thompson</dc:creator>
		<pubDate>Thu, 27 Dec 2007 01:45:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-2357</guid>
		<description>Many thanks Scott!!</description>
		<content:encoded><![CDATA[<p>Many thanks Scott!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Conners</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-2265</link>
		<dc:creator>John Conners</dc:creator>
		<pubDate>Wed, 24 Oct 2007 09:29:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-2265</guid>
		<description>Cheers Scott. The best place is probably the NSIS wiki itself since that&#039;s extremely useful code!</description>
		<content:encoded><![CDATA[<p>Cheers Scott. The best place is probably the NSIS wiki itself since that&#8217;s extremely useful code!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Moore</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-2264</link>
		<dc:creator>Scott Moore</dc:creator>
		<pubDate>Wed, 24 Oct 2007 03:30:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-2264</guid>
		<description>probably not the best place but here are some good macros for what you are doing.

!include WinVer.nsh
!include x64.nsh

!macro CHECK_MIN_WIN_VER
var /GLOBAL WIN_VER_PASSED         ;Win98?
var /GLOBAL WIN_SERVICEPACK_PASSED ;Win2kSP3
var /GLOBAL SQL_SERVICEPACK_PASSED ;Win2kSP4,Win2k3SP1,WinXPSP2
    StrCpy $WIN_VER_PASSED &quot;1&quot;
    StrCpy $WIN_SERVICEPACK_PASSED &quot;1&quot;
    StrCpy $SQL_SERVICEPACK_PASSED &quot;1&quot;

    ReadRegDWORD $R0 HKLM &quot;System\CurrentControlSet\Control\Windows&quot; &quot;CSDVersion&quot;
    IntOp $R0 $R0 / 256 ;get service pack major version

    ${If} ${IsWin2000}
        ${If} $R0 &lt; &quot;3&quot; ; SP3
            StrCpy $WIN_SERVICEPACK_PASSED &quot;0&quot;
        ${ElseIf} $R0 &lt; &quot;4&quot; ; SP4
            StrCpy $SQL_SERVICEPACK_PASSED &quot;0&quot;
        ${EndIf}
    ${ElseIf} ${IsWin2003}
        ${If} $R0 &lt; &quot;1&quot; ; SP1
            StrCpy $SQL_SERVICEPACK_PASSED &quot;0&quot;
        ${EndIf}
    ${ElseIf} ${IsWinXP}
        ${If} $R0 &lt; &quot;2&quot; ; SP2
            StrCpy $SQL_SERVICEPACK_PASSED &quot;0&quot;
        ${EndIf}
    ${ElseIf} ${AtMostWin2000}
        StrCpy $WIN_VER_PASSED &quot;0&quot;
    ${EndIf}
!macroend

!macro CHECK_ADMIN_RIGHTS
var /GLOBAL USER_ADMIN_PASSED      ;Administrator
        StrCpy $USER_ADMIN_PASSED &quot;1&quot;
        userInfo::getAccountType
        pop $0
        ${If} $0 != &quot;Admin&quot;
              StrCpy $USER_ADMIN_PASSED &quot;0&quot;
        ${EndIf}
!macroend
!macro MSI_INSTALL installer_path
    ;install msi version 3
     GetDllVersion &quot;$SYSDIR\msi.dll&quot; $1 $2
	IntOp $3 $1 / 0x00010000
	IntOp $4 $1 &amp; 0x0000FFFF
	;IntOp $5 $2 / 0x00010000
	;IntOp $6 $2 &amp; 0x0000FFFF
	StrCpy $0 &#039;$3.$4&#039;
     IntCmp $0 &quot;3.1&quot; MSI_NO_INSTALL MSI_INSTALL MSI_NO_INSTALL
     MSI_INSTALL: ;may be 3.0 or 3.1
     SetDetailsPrint both
     DetailPrint &quot;Updating Windows Installer&quot;
     SetDetailsPrint none
     !insertmacro EXEC_SUBINSTALLER &quot;Windows Installer 3.1&quot; \
          &#039;&quot;${installer_path}\WindowsInstaller-KB893803-v2-x86.exe&quot; /quiet /norestart&#039;
     MSI_NO_INSTALL:
!macroend

!macro MDAC_INSTALL installer_path
     StrCpy $1 &quot;0&quot;
     ReadRegStr $1 HKLM &quot;SOFTWARE\Microsoft\DataAccess&quot; &quot;Version&quot;
	     StrCpy $2 $1 3			;e.g. $2 is now &quot;2.5&quot;

	     ${If} $2 == &quot;&quot;
               Goto MDACNOTFOUND
          ${ElseIf} $2 == &quot;2.1&quot;
               Goto MDACNOTFOUND
          ${ElseIf} $2 == &quot;2.5&quot;
               Goto MDACNOTFOUND
          ${ElseIf} $2 == &quot;2.6&quot;
               Goto MDACNOTFOUND
          ${ElseIf} $2 == &quot;2.7&quot;
               Goto MDACNOTFOUND
          ${Else} ;must be greater
               Goto MDACCORRECT
          ${EndIf}
	MDACCORRECT:
		StrCpy $0 &quot;0&quot;
		Goto EXITFUNCTION
	MDACNOTFOUND:
          StrCpy $0 &quot;1&quot;
		Goto EXITFUNCTION
     EXITFUNCTION:
     ;is mdace same version
     ${If} $0 == &quot;1&quot; ;Less Than
          ;Install MDAC
          SetDetailsPrint both
          DetailPrint &quot;Installing MDAC&quot;
          SetDetailsPrint none
          !insertmacro EXEC_SUBINSTALLER &quot;Microsoft Data Access Components 2.8&quot; \
               &#039;&quot;${installer_path}\mdac_typ.exe&quot; /Q:A /C:&quot;dasetup /Q:D /N&quot;&#039;
          ;SetRebootFlag True not needed after runonce test
     ${EndIf}
!macroend

!macro NET_INSTALL installer_path
    ;Check for framework 2.0--------------------------------------
    StrCpy $1 &quot;0&quot;
    ReadRegDword $1 HKLM &quot;SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727&quot; &quot;Install&quot;
    ${If} $1 != &quot;1&quot;
        ${If} ${RunningX64}
            StrCpy $9 &#039;&quot;${installer_path}\netfx64.exe&quot; /q /c:&quot;install.exe /qb /noaspupgrade&quot;&#039;
        ${Else}
            StrCpy $9 &#039;&quot;${installer_path}\dotnetfx2.0.exe&quot; /q /c:&quot;install.exe /qb /noaspupgrade&quot;&#039;
        ${EndIf}
        SetDetailsPrint both
        DetailPrint &quot;Installing .Net Framework&quot;
        SetDetailsPrint none
        !insertmacro EXEC_SUBINSTALLER &quot;Microsoft .Net Framework 2.0&quot; $9
    ${EndIf}
!macroend


!macro IS_SQL_INSTALLED instance_name return
     strcpy ${return} &quot;0&quot;
     ReadRegStr $0 HKLM &quot;SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\&quot; CurrentVersion
     ${If} $0 != &quot;&quot; ;should = 9.if 2005 8. if 2000
          strcpy ${return} &quot;1&quot;
     ${EndIf}
!macroend
     
!macro SQL_INSTALL installer_path instance_name password install_dir settings_file
     ;Check for existing instance
     AddSize 358400
     ReadRegStr $0 HKLM &quot;SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\&quot; CurrentVersion
     ${If} $0 == &quot;&quot; ;should = 9.if 2005 8. if 2000
          !insertmacro EXEC_SUBINSTALLER &quot;Microsoft SQL Server 2005 Express Edition&quot; \
               &#039;&quot;${installer_path}\SQLEXPR.EXE&quot; /settings ${settings_file} /qb INSTANCENAME=${instance_name} SAPWD=${password} INSTALLSQLDIR=&quot;${install_dir}&quot;&#039;
     ${EndIf}
!macroend</description>
		<content:encoded><![CDATA[<p>probably not the best place but here are some good macros for what you are doing.</p>
<p>!include WinVer.nsh<br />
!include x64.nsh</p>
<p>!macro CHECK_MIN_WIN_VER<br />
var /GLOBAL WIN_VER_PASSED         ;Win98?<br />
var /GLOBAL WIN_SERVICEPACK_PASSED ;Win2kSP3<br />
var /GLOBAL SQL_SERVICEPACK_PASSED ;Win2kSP4,Win2k3SP1,WinXPSP2<br />
    StrCpy $WIN_VER_PASSED &#8220;1&#8243;<br />
    StrCpy $WIN_SERVICEPACK_PASSED &#8220;1&#8243;<br />
    StrCpy $SQL_SERVICEPACK_PASSED &#8220;1&#8243;</p>
<p>    ReadRegDWORD $R0 HKLM &#8220;System\CurrentControlSet\Control\Windows&#8221; &#8220;CSDVersion&#8221;<br />
    IntOp $R0 $R0 / 256 ;get service pack major version</p>
<p>    ${If} ${IsWin2000}<br />
        ${If} $R0 &lt; &#8220;3&#8243; ; SP3<br />
            StrCpy $WIN_SERVICEPACK_PASSED &#8220;0&#8243;<br />
        ${ElseIf} $R0 &lt; &#8220;4&#8243; ; SP4<br />
            StrCpy $SQL_SERVICEPACK_PASSED &#8220;0&#8243;<br />
        ${EndIf}<br />
    ${ElseIf} ${IsWin2003}<br />
        ${If} $R0 &lt; &#8220;1&#8243; ; SP1<br />
            StrCpy $SQL_SERVICEPACK_PASSED &#8220;0&#8243;<br />
        ${EndIf}<br />
    ${ElseIf} ${IsWinXP}<br />
        ${If} $R0 &lt; &#8220;2&#8243; ; SP2<br />
            StrCpy $SQL_SERVICEPACK_PASSED &#8220;0&#8243;<br />
        ${EndIf}<br />
    ${ElseIf} ${AtMostWin2000}<br />
        StrCpy $WIN_VER_PASSED &#8220;0&#8243;<br />
    ${EndIf}<br />
!macroend</p>
<p>!macro CHECK_ADMIN_RIGHTS<br />
var /GLOBAL USER_ADMIN_PASSED      ;Administrator<br />
        StrCpy $USER_ADMIN_PASSED &#8220;1&#8243;<br />
        userInfo::getAccountType<br />
        pop $0<br />
        ${If} $0 != &#8220;Admin&#8221;<br />
              StrCpy $USER_ADMIN_PASSED &#8220;0&#8243;<br />
        ${EndIf}<br />
!macroend<br />
!macro MSI_INSTALL installer_path<br />
    ;install msi version 3<br />
     GetDllVersion &#8220;$SYSDIR\msi.dll&#8221; $1 $2<br />
	IntOp $3 $1 / 0&#215;00010000<br />
	IntOp $4 $1 &amp; 0x0000FFFF<br />
	;IntOp $5 $2 / 0&#215;00010000<br />
	;IntOp $6 $2 &amp; 0x0000FFFF<br />
	StrCpy $0 &#8216;$3.$4&#8242;<br />
     IntCmp $0 &#8220;3.1&#8243; MSI_NO_INSTALL MSI_INSTALL MSI_NO_INSTALL<br />
     MSI_INSTALL: ;may be 3.0 or 3.1<br />
     SetDetailsPrint both<br />
     DetailPrint &#8220;Updating Windows Installer&#8221;<br />
     SetDetailsPrint none<br />
     !insertmacro EXEC_SUBINSTALLER &#8220;Windows Installer 3.1&#8243; \<br />
          &#8216;&#8221;${installer_path}\WindowsInstaller-KB893803-v2-x86.exe&#8221; /quiet /norestart&#8217;<br />
     MSI_NO_INSTALL:<br />
!macroend</p>
<p>!macro MDAC_INSTALL installer_path<br />
     StrCpy $1 &#8220;0&#8243;<br />
     ReadRegStr $1 HKLM &#8220;SOFTWARE\Microsoft\DataAccess&#8221; &#8220;Version&#8221;<br />
	     StrCpy $2 $1 3			;e.g. $2 is now &#8220;2.5&#8243;</p>
<p>	     ${If} $2 == &#8220;&#8221;<br />
               Goto MDACNOTFOUND<br />
          ${ElseIf} $2 == &#8220;2.1&#8243;<br />
               Goto MDACNOTFOUND<br />
          ${ElseIf} $2 == &#8220;2.5&#8243;<br />
               Goto MDACNOTFOUND<br />
          ${ElseIf} $2 == &#8220;2.6&#8243;<br />
               Goto MDACNOTFOUND<br />
          ${ElseIf} $2 == &#8220;2.7&#8243;<br />
               Goto MDACNOTFOUND<br />
          ${Else} ;must be greater<br />
               Goto MDACCORRECT<br />
          ${EndIf}<br />
	MDACCORRECT:<br />
		StrCpy $0 &#8220;0&#8243;<br />
		Goto EXITFUNCTION<br />
	MDACNOTFOUND:<br />
          StrCpy $0 &#8220;1&#8243;<br />
		Goto EXITFUNCTION<br />
     EXITFUNCTION:<br />
     ;is mdace same version<br />
     ${If} $0 == &#8220;1&#8243; ;Less Than<br />
          ;Install MDAC<br />
          SetDetailsPrint both<br />
          DetailPrint &#8220;Installing MDAC&#8221;<br />
          SetDetailsPrint none<br />
          !insertmacro EXEC_SUBINSTALLER &#8220;Microsoft Data Access Components 2.8&#8243; \<br />
               &#8216;&#8221;${installer_path}\mdac_typ.exe&#8221; /Q:A /C:&#8221;dasetup /Q:D /N&#8221;&#8216;<br />
          ;SetRebootFlag True not needed after runonce test<br />
     ${EndIf}<br />
!macroend</p>
<p>!macro NET_INSTALL installer_path<br />
    ;Check for framework 2.0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    StrCpy $1 &#8220;0&#8243;<br />
    ReadRegDword $1 HKLM &#8220;SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727&#8243; &#8220;Install&#8221;<br />
    ${If} $1 != &#8220;1&#8243;<br />
        ${If} ${RunningX64}<br />
            StrCpy $9 &#8216;&#8221;${installer_path}\netfx64.exe&#8221; /q /c:&#8221;install.exe /qb /noaspupgrade&#8221;&#8216;<br />
        ${Else}<br />
            StrCpy $9 &#8216;&#8221;${installer_path}\dotnetfx2.0.exe&#8221; /q /c:&#8221;install.exe /qb /noaspupgrade&#8221;&#8216;<br />
        ${EndIf}<br />
        SetDetailsPrint both<br />
        DetailPrint &#8220;Installing .Net Framework&#8221;<br />
        SetDetailsPrint none<br />
        !insertmacro EXEC_SUBINSTALLER &#8220;Microsoft .Net Framework 2.0&#8243; $9<br />
    ${EndIf}<br />
!macroend</p>
<p>!macro IS_SQL_INSTALLED instance_name return<br />
     strcpy ${return} &#8220;0&#8243;<br />
     ReadRegStr $0 HKLM &#8220;SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\&#8221; CurrentVersion<br />
     ${If} $0 != &#8220;&#8221; ;should = 9.if 2005 8. if 2000<br />
          strcpy ${return} &#8220;1&#8243;<br />
     ${EndIf}<br />
!macroend</p>
<p>!macro SQL_INSTALL installer_path instance_name password install_dir settings_file<br />
     ;Check for existing instance<br />
     AddSize 358400<br />
     ReadRegStr $0 HKLM &#8220;SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\&#8221; CurrentVersion<br />
     ${If} $0 == &#8220;&#8221; ;should = 9.if 2005 8. if 2000<br />
          !insertmacro EXEC_SUBINSTALLER &#8220;Microsoft SQL Server 2005 Express Edition&#8221; \<br />
               &#8216;&#8221;${installer_path}\SQLEXPR.EXE&#8221; /settings ${settings_file} /qb INSTANCENAME=${instance_name} SAPWD=${password} INSTALLSQLDIR=&#8221;${install_dir}&#8221;&#8216;<br />
     ${EndIf}<br />
!macroend</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Conners</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-1396</link>
		<dc:creator>John Conners</dc:creator>
		<pubDate>Wed, 15 Mar 2006 18:38:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-1396</guid>
		<description>I learned how to use NSIS just by trying to write my installer and finding sample code on the NSIS site to do what I was trying to do (with a small amount of reading the manual). Since I was only installing some files and downloading then installing the .NET framework if it wasn&#039;t there, I just used the default template and went from there. You can modify the code here for the .NET 2 framework:

&lt;a href=&quot;http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework&quot; rel=&quot;nofollow&quot;&gt;http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework&lt;/a&gt;

I&#039;m not sure about deploying SQL 2005 Express though, I believe it uses the same installation technology as the .NET 2 framework so you might want to scour MSDN to see what the command line arguments for it are.

If you&#039;re still stuck then drop me an email on my contact page and I&#039;ll see if I can help you out.
</description>
		<content:encoded><![CDATA[<p>I learned how to use NSIS just by trying to write my installer and finding sample code on the NSIS site to do what I was trying to do (with a small amount of reading the manual). Since I was only installing some files and downloading then installing the .NET framework if it wasn&#8217;t there, I just used the default template and went from there. You can modify the code here for the .NET 2 framework:</p>
<p><a href="http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework" rel="nofollow">http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework</a></p>
<p>I&#8217;m not sure about deploying SQL 2005 Express though, I believe it uses the same installation technology as the .NET 2 framework so you might want to scour MSDN to see what the command line arguments for it are.</p>
<p>If you&#8217;re still stuck then drop me an email on my contact page and I&#8217;ll see if I can help you out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dane Bertram</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-1395</link>
		<dc:creator>Dane Bertram</dc:creator>
		<pubDate>Tue, 14 Mar 2006 13:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-1395</guid>
		<description>I&#039;m a .NET guy and mostly write apps using SQL Server 2005 Express for my client-side db (replicates with a server instance).  I&#039;ve scoured the internet looking for tutorials or tips on using NSIS for deploying .NET apps along with SQL 2005 Express, but haven&#039;t come up with much.  Could you recommend any resources to look at?  Also, what do you feel is the best way to start learning NSIS? Just follow the user manual that it comes with?
</description>
		<content:encoded><![CDATA[<p>I&#8217;m a .NET guy and mostly write apps using SQL Server 2005 Express for my client-side db (replicates with a server instance).  I&#8217;ve scoured the internet looking for tutorials or tips on using NSIS for deploying .NET apps along with SQL 2005 Express, but haven&#8217;t come up with much.  Could you recommend any resources to look at?  Also, what do you feel is the best way to start learning NSIS? Just follow the user manual that it comes with?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-1394</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Thu, 17 Nov 2005 05:49:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-1394</guid>
		<description>Of course, if it was server side PHP you were writing, you wouldn&#039;t need all this poncey Windows guff!
</description>
		<content:encoded><![CDATA[<p>Of course, if it was server side PHP you were writing, you wouldn&#8217;t need all this poncey Windows guff!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Conners</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-1393</link>
		<dc:creator>John Conners</dc:creator>
		<pubDate>Mon, 14 Nov 2005 20:48:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-1393</guid>
		<description>Ha ha! That&#039;s how I remember it, maybe my memory&#039;s playing trick on me! ;)
</description>
		<content:encoded><![CDATA[<p>Ha ha! That&#8217;s how I remember it, maybe my memory&#8217;s playing trick on me! <img src='http://johnsadventures.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven Segall</title>
		<link>http://johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis/comment-page-1/#comment-1392</link>
		<dc:creator>Steven Segall</dc:creator>
		<pubDate>Mon, 14 Nov 2005 20:43:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.johnsadventures.com/wp/archives/2005/11/my-installer-fixation-and-nsis.html#comment-1392</guid>
		<description>&lt;i&gt;At my last place I probably took a few weeks to write the installer and it dropped the time to install our software from a full day to around 10 minutes - and it always worked.&lt;/i&gt;

Really?  Always worked?  Is that a few &#039;john&#039; weeks (which translates to 3 months in realtime?)  And heres me thinking the original installer took on average 30 mins, with the record installation time being 12 minutes ;-)
</description>
		<content:encoded><![CDATA[<p><i>At my last place I probably took a few weeks to write the installer and it dropped the time to install our software from a full day to around 10 minutes &#8211; and it always worked.</i></p>
<p>Really?  Always worked?  Is that a few &#8216;john&#8217; weeks (which translates to 3 months in realtime?)  And heres me thinking the original installer took on average 30 mins, with the record installation time being 12 minutes <img src='http://johnsadventures.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Object Caching 299/300 objects using disk: basic

Served from: johnsadventures.com @ 2012-02-10 20:34:26 -->
