Skip to main content

Scratch Programming

·401 words·2 mins
Darren Pruitt
Author
Darren Pruitt

I have started doing more scratch programming, one off little bits of code that I use and throw away. I found that I am not coding as much at work as I need to be, or want to be for that matter. I am loosing my touch.

Like any thing else, if you don’t use it you loose it.

When I create projects I like to follow a specific file structure. Nothing fancy, I use a solution folder with folders for lib, src and tests. So when I create my scratch solutions I want to create the same folder structure, but there is no easy way to do it with Visual Studio. I tried to create a project template, which would work if what I wanted was skeleton projects. But what I want are skeleton folders and the VS templates won’t create those.

What I wound up doing was create an MSI using NSIS that would create the folder structure and copy core libraries that I like to use. So far it is working out pretty good and was surprisingly simple to create, not by hand of course but with HM NIS Edit, a free tool to create and edit NSIS scripts.

; Script generated by the HM NIS Edit Script
      Wizard.  
  
; HM NIS Edit Wizard helper defines  
!define
      PRODUCT_NAME "Scratch Template"  
!define PRODUCT_VERSION "1.0"  
!define
      PRODUCT_PUBLISHER "HomeNet"  
!define PRODUCT_WEB_SITE
      "http://blog.ddpruitt.net"  
;!define PRODUCT_DIR_REGKEY
      "SoftwareMicrosoftWindowsCurrentVersionApp PathsMbUnit.Cons.exe"  
  
; MUI
      1.67 compatible ------  
!include "MUI.nsh"  
  
; MUI
      Settings  
!define MUI_ABORTWARNING  
!define MUI_ICON
      "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"  
  
; Welcome
      page  
!insertmacro MUI_PAGE_WELCOME  
; License page  
;!insertmacro
      MUI_PAGE_LICENSE "............\path\to\licence\Your\SoftwareLicence.txt"  
;
      Components page  
!insertmacro MUI_PAGE_COMPONENTS  
; Directory
      page  
!insertmacro MUI_PAGE_DIRECTORY  
; Instfiles
      page  
!insertmacro MUI_PAGE_INSTFILES  
; Finish page  
!insertmacro
      MUI_PAGE_FINISH  
  
; Language files  
!insertmacro MUI_LANGUAGE
      "English"  
  
; MUI end ------  
  
Name "${PRODUCT_NAME}
      ${PRODUCT_VERSION}"  
OutFile "ScratchSetup.exe"  
InstallDir
      "$DOCUMENTSVisual Studio 2005ProjectsScratchNewSolution"  
;InstallDirRegKey HKLM
      "${PRODUCT_DIR_REGKEY}" ""  
ShowInstDetails show  
  
Section
      "MainSection" SEC01  
SetOutPath "$INSTDIR"  
SetOverwrite
      ifnewer  
File "GenericSolution.sln"  
CreateDirectory
      $INSTDIRlib  
CreateDirectory $INSTDIRsrc  
CreateDirectory
      $INSTDIRtest  
SectionEnd  
  
Section "MbUnit"
      SEC02  
SetOutPath "$INSTDIR\lib\MbUnit"  
SetOverwrite try  
File
      "\lib\MbUnit\MbUnit.Framework.dll"  
.  
.  
.  
SectionEnd  
  
Section
      "Log4Net" SEC03  
SetOutPath "$INSTDIR\lib\log4net"  
File
      "\lib\log4net\log4net.dll"  
SectionEnd  
  
Section "Enterprise
      Library (June 2006)" SEC04  
SetOutPath "$INSTDIR\lib\EntLib.2006.01"  
File
      "\lib\EnterpriseLibrary.2006.01\EntLibConfig.exe"  
.  
.  
.  
SectionEnd  
  
;Section
      -Post  
; WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" ""
      "$INSTDIR\lib\MbUnit\MbUnit.Cons.exe"  
;SectionEnd  
  
; Section
      descriptions  
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN  
!insertmacro
      MUI_DESCRIPTION_TEXT ${SEC01} ""  
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02}
      ""  
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} ""  
!insertmacro
      MUI_DESCRIPTION_TEXT ${SEC04} ""  
!insertmacro
      MUI_FUNCTION_DESCRIPTION_END

Add the appropriate files to the Sections, compile and your ready.