<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>christomlinson.name &#187; development</title>
	<atom:link href="http://christomlinson.name/tags/development/feed" rel="self" type="application/rss+xml" />
	<link>http://christomlinson.name</link>
	<description></description>
	<lastBuildDate>Sun, 04 Jul 2010 20:17:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>KeePass PLGX build automation</title>
		<link>http://christomlinson.name/articles/keepass-plgx-build-automation</link>
		<comments>http://christomlinson.name/articles/keepass-plgx-build-automation#comments</comments>
		<pubDate>Sun, 20 Sep 2009 12:27:11 +0000</pubDate>
		<dc:creator>Luckyrat</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[chris]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[keefox]]></category>
		<category><![CDATA[keepass]]></category>
		<category><![CDATA[tomlinson]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://christomlinson.name/?p=23</guid>
		<description><![CDATA[One of KeePass Password Safe&#8217;s strengths is the ability to install plugins. This keeps the main application simple and hence (potentially) more secure. Developing plugins for KeePass and installing them has always been pretty straight forward but starting with KeePass &#8230; <a href="http://christomlinson.name/articles/keepass-plgx-build-automation">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of KeePass Password Safe&#8217;s strengths is the ability to install  plugins. This keeps the main application simple and hence (potentially)  more secure. Developing plugins for KeePass and installing them has  always been pretty straight forward but starting with KeePass 2.09 there  is a new plugin format which now means that your plugins will not need  to be re-compiled every time a new version of KeePass is released. If  enough plugin authors migrate their plugins to this new format then this  should gradually remove some of the barriers that discourage users from  promptly upgrading to the latest version of KeePass.</p>
<p>This article outlines how I moved my KeeICE plugin to the new format and  shows how the PLGX build can be integrated with Visual Studio. (KeeICE  is the KeePass plugin that the KeeFox firefox add-on communicates with &#8211;  a beta release is (still) not far away).</p>
<p>First, check out the <a href="http://keepass.info/help/v2_dev/plg_index.html#plgx">documentation</a> and maybe the <a href="http://sourceforge.net/projects/keepass/forums/forum/329220/topic/3373176">forum  post</a> where the feature was first announced.</p>
<p>I found that they explained the benefits (and small limitations) of the  new format and it wasn&#8217;t long before I had a PLGX version of my plugin  built and loaded into KeePass.</p>
<p>After a variety of changes to my installation routines (so they know to  deal with one PLGX file rather than the previous two DLL files) the only  remaining challenge was to find a way to package the PLGX quickly. To  do this I modified my post-build event so that once Visual Studio has  built the plugin DLL, the PLGX creation process happens automatically.  This fits in nicely with my existing build process and ensures that I  can quickly build a fully packaged Firefox add-on, ready to be shiped  onto test virtual machines and the few other PCs I usually have  bleeding-edge versions of KeeFox running on.</p>
<p>Of course, I also want to debug my KeePass plugin from time to time so  my post-build script needs to put the actual plugin DLL (and dependancy)  into the KeePass plugins directory whenever I am running Visual Studio  in the Debug configuration (my debug command is set to load KeePass and  Firefox so the plugin and add-on need to be in place by the end of the  build process).</p>
<p>I have put the post-build script below in case anyone else finds it  useful. You will need to read through it and modify it in a few places  to suit your particular plugin and its dependencies (or lack thereof)  but it should be almost ready for a quick copy and paste into your  Visual Studio configuration. NB: The script assumes that the KeePass  plugins directory already exists.</p>
<pre>echo POSTBUILDSTEP for $(ProjectName)

set KPDir=C:\Program Files\KeePass Password Safe 2\
set KPPDir=%KPDir%plugins\
set KPPTempDir=%KPPDir%$(ProjectName)

IF NOT "$(ConfigurationName)"=="Debug" Goto :NotDebug
REM In debug mode we want to move the generated DLLs and PDBs to the plugins
REM directory so we can easily set breakpoints, etc.
REM In this case, we don't care if the Firefox add-on has missing or outdated
REM files (they are only used at install time so it won't affect debugging)

REM delete the PLGX from any previous Release build
del /Q "%KPPDir%$(ProjectName).plgx"
if errorlevel 1 goto BuildEventFailed
echo Release plgx deleted

REM copy output DLLs to KeePass plugins directory
copy "$(ProjectName).dll" "%KPPDir%\$(ProjectName).dll"
if errorlevel 1 goto BuildEventFailed
copy "Ice.dll" "%KPPDir%\Ice.dll"
if errorlevel 1 goto BuildEventFailed
echo Debug DLLs copied to plugins directory

goto BuildEventOK

:NotDebug
IF NOT "$(ConfigurationName)"=="Release" Goto :NotRelease
REM In release mode we want to make sure that we are working with the PLGX version.
REM For the KeeFox project we will be in this mode quite a lot (whenever working
REM primarily on the Firefox add-on part of the project rather than KeeICE)

REM delete the DLLs from any previous Debug build
del /Q "%KPPDir%$(ProjectName).dll"
if errorlevel 1 goto BuildEventFailed
del /Q "%KPPDir%Ice.dll"
if errorlevel 1 goto BuildEventFailed
echo Debug DLLs deleted

REM create temporary directory
rmdir /S /Q "%KPPTempDir%"
mkdir "%KPPTempDir%"
if errorlevel 1 goto BuildEventFailed
echo Temporary directory created

REM copy relevant project files to temporary directory
REM (for simple KeePass plugins you may need to
REM copy only *.cs files and .csproj file)
copy "Ice.dll" "%KPPTempDir%\Ice.dll"
if errorlevel 1 goto BuildEventFailed
copy "$(ProjectDir)*.cs" "%KPPTempDir%"
if errorlevel 1 goto BuildEventFailed
copy "$(ProjectDir)$(ProjectName).csproj" "%KPPTempDir%\$(ProjectName).csproj"
if errorlevel 1 goto BuildEventFailed
mkdir "%KPPTempDir%\Properties"
copy "$(ProjectDir)Properties\AssemblyInfo.cs" "%KPPTempDir%\Properties\AssemblyInfo.cs"
if errorlevel 1 goto BuildEventFailed
mkdir "%KPPTempDir%\generated"
copy "$(ProjectDir)generated\KeeICE.cs" "%KPPTempDir%\generated\KeeICE.cs"
if errorlevel 1 goto BuildEventFailed
echo Files copied to temporary directory

REM create the PLGX
"%KPDir%KeePass.exe" --plgx-create "%KPPTempDir%"
if errorlevel 1 goto BuildEventFailed
echo PLGX created

REM copy PLGX to Firefox addon folder (for packaging in a .xpi later)
REM copy "%KPPDir%KeeICE.plgx" "$(SolutionDir)Firefox addon\KeeFox\deps\KeeICE.plgx"
REM if errorlevel 1 goto BuildEventFailed
REM echo PLGX copied to Firefox add-on

REM delete the temporary directory and its contents
rmdir /S /Q "%KPPTempDir%"
if errorlevel 1 goto BuildEventFailed
echo Temporary directory deleted

goto BuildEventOK</pre>
<p><strong><!-- Xtypo - Extra Typografi For Joomla Template By http://www.templateplazza.com --></strong></p>
<p>This  is all tested on Visual Studio 2008 on Windows XP SP3 but I have had <a href="http://anotherlab.rajapet.net/2008/01/copying-files-with-vs-2008-port-build.html">this  page</a> bookmarked for a while in case I come across similar problems  on newer versions of Windows. It might be useful if you&#8217;re running Vista  or 7 and run into any problems copying the files into the KeePass  directory (basically, take a sledgehammer to the permissions on the  plugins directory).</p>
<p><!-- End Xtypo --></p>
]]></content:encoded>
			<wfw:commentRss>http://christomlinson.name/articles/keepass-plgx-build-automation/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 installer project tips</title>
		<link>http://christomlinson.name/articles/visual-studio-2008-installer-project-tips</link>
		<comments>http://christomlinson.name/articles/visual-studio-2008-installer-project-tips#comments</comments>
		<pubDate>Thu, 29 Jan 2009 22:35:54 +0000</pubDate>
		<dc:creator>Luckyrat</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[chris]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[tomlinson]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://christomlinson.name/?p=29</guid>
		<description><![CDATA[No doubt there are entire teams of people dedicated to understanding the Microsoft Windows installer system (.msi files) but for me it is just a means to an end. I didn&#8217;t find it a particularly accessible technology so from the &#8230; <a href="http://christomlinson.name/articles/visual-studio-2008-installer-project-tips">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No doubt there are entire teams of people dedicated to understanding the  Microsoft Windows installer system (.msi files) but for me it is just a  means to an end. I didn&#8217;t find it a particularly accessible technology  so from the point of view of someone interested in deploying the output  from a Visual Studio 2008 project onto end user systems, here are a  couple of the gotchas I came across.</p>
<p>First, there is a registry key on the end user system which should  record the location into which the installer deployed the output of your  project (maybe the end user choose this through an install wizard). I  mistakenly assumed that Microsoft&#8217;s Visual Studio installer project  would automatically handle the basics like this, but no. The answer was  in this recent blog post: <a href="http://www.hardcodet.net/2008/12/arpinstalllocation-for-visual-studio-setups">Using  a Post-Build Script to set the InstallLocation property in VS Setup  Projects</a> &#8211; the author includes a handy script which you can just  drop into your project to fix this problem.</p>
<p>The second problem was an error message I received when installing my  project:</p>
<p><em>Error 1001. Unable to get installer types in the [...] assembly.  Unable to load one or more of the requested types. Retrieve the  LoaderExceptions property for more information.</em></p>
<p>Although missing DLL dependencies and pre-requisites are already  published known causes for this problem, that didn&#8217;t quite reveal the  true cause in my case. The reason I experienced this error is because:</p>
<p>1) I had set up a custom install action in my main project assembly (to  add the install folder to the system path)<br />
2) I had redirected the primary project output to an alternative folder  (rather than the default &#8220;Application folder&#8221;)</p>
<p>So the quick fix was to add a second project output to the installer so  it now puts the DLL into my alternative folder as well as the main  output folder (along with all its other DLL dependencies). Hopefully  there is a neater way to do this which doesn&#8217;t clutter the end user&#8217;s  system with two copies of the same file but I&#8217;m in no rush to find it  because I just want to get on with some real development work rather  than trying to understand VS2008 installer project limitations.</p>
]]></content:encoded>
			<wfw:commentRss>http://christomlinson.name/articles/visual-studio-2008-installer-project-tips/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>KeeFox task list</title>
		<link>http://christomlinson.name/articles/keefox-task-list</link>
		<comments>http://christomlinson.name/articles/keefox-task-list#comments</comments>
		<pubDate>Tue, 05 Aug 2008 21:26:31 +0000</pubDate>
		<dc:creator>Luckyrat</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[chris]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[keefox]]></category>
		<category><![CDATA[keepass]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tomlinson]]></category>

		<guid isPermaLink="false">http://christomlinson.name/?p=44</guid>
		<description><![CDATA[THIS PAGE IS DEPRECATED Please see http://sourceforge.net/apps/trac/keefox/report/3 for an up to date task list. All dates are just an early estimation and I won&#8217;t be making any effort to treat them as deadlines but I hope they are vaguely realistic. &#8230; <a href="http://christomlinson.name/articles/keefox-task-list">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tip">
<p>THIS PAGE IS DEPRECATED</p>
<p>Please see <a href="http://sourceforge.net/apps/trac/keefox/report/3">http://sourceforge.net/apps/trac/keefox/report/3</a> for an up to date task list.</p>
</div>
<p>All dates are just an early estimation and I won&#8217;t be making any effort  to treat them as deadlines but I hope they are vaguely realistic. Task  assignments to particular versions are just a prediction of where I  currently think a feature could fit into the project development  timeline but again, it&#8217;s all subject to change as the project develops.</p>
<h3>ongoing tasks</h3>
<ul>
<li>Review of code to reduce memory leaks and improve performance</li>
<li>Development of thorough self-test routines</li>
<li>Locale development (translation of user interface to other  languages)</li>
<li>Peer-review of code to highlight security issues</li>
<li>icon. fox + padlock? copyright issues if too similar to firefox  or KP?</li>
</ul>
<h3>0.1 [August W4]</h3>
<ul>
<li><span style="text-decoration: line-through;">FF LoginManagerStorage implementation (maybe missing  some parts like entry deletion or http realm logins)</span> [2008-10-05: done then cancelled]</li>
<li>prompt for DB open as required [2008-10-05: done]</li>
</ul>
<h3>0.2 [September W3]</h3>
<ul>
<li>handle keepass start and close events in FF (how to tell  difference between KP not running and not-installed? ICE runtimes?)  [2008-10-05: partially done]</li>
<li><span style="text-decoration: line-through;">complete LoginManagerStorage impl. if required (what  happens with &#8220;clear passwords&#8221; integration?!, etc.)</span> [2008-10-05: cancelled]</li>
</ul>
<h3>0.3 [October W3]</h3>
<ul>
<li>Improved LoginManager (ILM) [2008-10-05:  moved from 0.4]</li>
<li>ILM: replicate built in login manager (extend existing JS code)  [2008-10-05:  moved from 0.4]</li>
<li>ILM: handle disabling/enabling built in login manager &#8211; options +  (un)install [2008-10-05:  moved from 0.4]</li>
</ul>
<h3>0.4 [November W4]</h3>
<ul>
<li><span style="text-decoration: line-through;">Allow choice between standard and ILM?</span> [2008-10-05: cancelled]</li>
<li><span style="text-decoration: line-through;">Make sure passwords don&#8217;t get corrupt when swapping  between LMs</span> [2008-10-05: cancelled]</li>
<li><span style="text-decoration: line-through;">Clean LM swaps (data migrations if necessary)</span> [2008-10-05: cancelled]</li>
<li>match multiple domains for one KP entry (e.g. hotmail, live.com)</li>
<li>Cleanly manage &#8220;new user&#8221; experience in terms of downloading  keepass and setting up new database [2008-10-05: partialy done; moved  from 0.3]</li>
<li>Deal with non-installed pre-requisites (e.g. KeePass v2)  [2008-10-05: partially done; moved from 0.3]</li>
<li>Package/release system (XPI?) [2008-10-05: planned and mostly  done; moved from 0.3]</li>
<li>test binary / installation process on seperate machine</li>
</ul>
<h3>0.5 [December W4]</h3>
<ul>
<li>XUL locale support [2008-10-05:  moved from 0.3]</li>
<li>FF based options control system</li>
<li>configurable default database and group</li>
<li>Folders/groups &#8211; probably through integration with KP Groups and  Firefox places (FFP)</li>
<li>FFP: tie places URL to KP URL</li>
<li>FFP: custom places view? used to render a &#8220;quick login&#8221; drop  down menu system</li>
<li>publish first binary version</li>
</ul>
<h3>0.6-0.7 [January/February]</h3>
<ul>
<li>integration with some other plugins. e.g. Nexus&#8217;s Firefox to  KeePass</li>
<li>FFP: integrate with location bar drop down list, history and  bookmarks folder (option to log in straight from there)</li>
<li>FFP: options to show/hide links without logins in main drop down  system</li>
<li>configurable custom-data location</li>
<li>ILM: support for deleting passwords, etc.</li>
<li>ILM: auto-submit</li>
<li>ILM: modal box option [2008-10-05: may not be done before  version 1.0]</li>
<li>ILM: in-page pop-over login option</li>
<li>ILM: default auto-submit selection, with hot-key over-ride</li>
<li>(beta 1?)</li>
</ul>
<h3>0.8 &#8211; 1.0 [March - July 2009]</h3>
<ul>
<li>ILM: allow option to not require master password for everything  [2008-10-05: moved from 0.4; may not be done before version 1.0]</li>
<li>ILM: Support for custom fields (e.g. radio buttons, checkboxes,  PIN numbers, etc.)</li>
<li>Save after first registration functionality (ILM only?)</li>
<li>track how many times logins used (FFP: show popular sites, order  by frequency, hide infrequently used etc.)</li>
<li>User-identified &#8220;essential improvements&#8221;</li>
<li>thorough bug testing</li>
<li>user documentation</li>
<li>user help,tooltips,wizzards,etc.</li>
<li>notices, etc. in appropriate places in main firefox UI so user  knows KeePass is storing passwords</li>
<li>(beta 2, RCs?)</li>
</ul>
<h3>1.1+</h3>
<ul>
<li>Identities (inc. openID?)</li>
<li>KeePass v1 support</li>
</ul>
<h3>Maybe TODO</h3>
<ul>
<li>Force KeeICE to only communicate with KeeFox</li>
<li>SSL encrypt ICE communication channel (store private key in KP  DB?)</li>
<li>OpenID: Haven&#8217;t given this enough thought but maybe some  integration of openID features could be good.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://christomlinson.name/articles/keefox-task-list/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.170 seconds -->

