Codoxide
1Oct/110

Live Mesh won’t sync Microsoft Expression Web “site”?

Windows-Live-Mesh

I have work on multiple Windows devices. I've found Windows Live Mesh to be the best tool to keep files synced between these machines. The key advantage it has over other similar tools like Dropbox is that it can sync solely over p2p. So, I can keep my massive files synced without having to go through the excruciating pain of waiting to have such files upload to the cloud.

Yesterday, I created a new Microsoft Expression Web "site" folder as a sub folder in one of the folders synced by Live Mesh. Later I found that the folder isn't being synced between my computers. It wasn't really obvious why but, after much searching, I found the reason. Expression Web is marking the folder as a "System" folder [Why does it do that? Just to make sure it gets to change the folder icon :) ]

23Apr/110

My Samsung Galaxy S Home Screens

SC20110423-192249_thumb.png

I’ve had my Samsung Galaxy S GT-I90000 for a while now. The default iPhony look bothered me so much that I had been looking for an alternative look since the day I got it. One of my greatest inspirations have been the cool screens posted at XDA forums.

So, after couple of months of looking around, I finally threw together some screens that seemed to look decent.

Here goes:

23Sep/102

Resolving Pligg Installation Error: The pligg_config table is empty or does not exist

Pligg

So here I was, trying to setup a Pligg website on my Windows 7 machine. I’ve just gotten the latest MySQL and PHP installed. Setup all the permissions required, and ran the installer.php. All seem to go well until, I got to table setup page..

28Jul/100

BlogEngine.net Extension for Embedding JotForms form

image_3

JotForm is one the best online Form Builders out there. It offers more enticing features on its free edition than any of its rivals.

But, why would a developer need an online Form Builder? If you are building a site from scratch or if you are using a powerful CMS such as DNN, you'd probably build the form yourself or use a form builder module. But, increasingly more people are deploying BlogEngine.net as a CMS as it's much more simpler to theme, customize, deploy, train and maintain. And BE.NET, meant to be a blog engine doesn't (yet!) have the cabailities to build forms on the fly: Nor there are any modules (yet!) to do the same. So, the likes of JotForm becomes a really good option.

The problem? Well, there's no easy way to embed a JotForm on a BE page or a post. That's why I went ahead and built this simple extension.

4Apr/090

Getting ASP.NET Development Server (WebDev.WebServer.exe) to work on Vista

I came across a weird issue today with my ASP.NET Dev Server. I’m running Vista Home Premium with Firefox set as the default browser. I was consistently getting a “Failed to Connect: Firefox can't establish a connection to the server at localhost:<port>.” error. Little bit of Goolge pointed me to several posts suggesting that I turn off IPV6 on my network adapter.

Hmmm… Nope!

I know a better way to fix this (fingers crossed).

15Nov/080

Codoxide Library | Updates and New Home

I have made several updates to the Codoxide.Common Library and moved the project over to SourceForge.net.

The project's new home is codoxidelib.sourceforge.net and the new SVN repository is https://codoxidelib.svn.sourceforge.net/svnroot/codoxidelib/trunk

20Oct/087

Codoxide.Common Library Version 0.0.1 (Concept Phase): Database Wrapper, Basic Design Patterns, Configuration Handlers

Today I'm so excited to announce the first release of the Codoxide.Common Library. I haven't been over ambitious about the version numbering as I want you to treat this library to still be in concept stage.

Unfortunately, this release had taken longer than expected cos of my newly cramped up schedule. Worst part of that is I'm posting this code without proper documentation (yep, excuses!). Nevertheless, there's plenty of code in here to prove useful to many. So here goes!

18Aug/089

Codoxide version 2.0 | New Theme and Updated Engine

When this post finally goes live, it'll accompany a new theme and the latest revision of the BlogEngine.net.

I'm gonna call this theme "Dark Garden". With this, I'm retiring my old "Defiance" theme. I have resued the icon packs that I used for the Defiance theme. Therefore, most of the credits remain with the authors mentioned on that page. New additions are:

In honour of the artists (wish everybody had stamps like this):

 

 

Update:

This site could have saved me couple of minutes off my design time.. Oh well

19Jun/081

Updating the Database Wrapper for C#

I have made a few updates for my Generic Database Wrapper class. The update contains a bug fix along with several additional methods for supporting DbParameters.

The new source file can be downloaded here. I have also updated the file linked to the original post.

21May/080

VSTO App Deployment using NSIS – Part 2

Detecting and Deploying Prerequisites

This is the 2nd of a multi-part series on deploying VSTO Applications using NSIS. Part 1 of the series can be found here.

Step 4: Ensuring MSI 3.1 is available

Before proceeding you need to make sure the client computer has MSI 3.1 installed. Click here to find out how.

Step 5: Checking whether Excel is Installed

Being an Excel Worksheet-Level Customization, it makes no sense for this app to be deployed on a computer that doesn't have MSO Excel 2003 Professional installed. Lets see how we can achieve this. If you do a bit of research you can find out that with VS Deployment Projects, this is achieved by doing a Windows Installer search for the component ID {A2B280D4-20FB-4720-99F7-40C09FBCE10A}.

Since performing a Windows Installer Search is a common and desirable feature, I came up with the following macro:

!macro GenerateMsiSearch functionName componentId 0
    Function ${functionName}
        Push $0
        Push $1
        StrCpy $0 ""
        StrCpy $1 ""

        System::Call "msi::MsiLocateComponent(t '${componentId}', t, *i) i .r1"
        DetailPrint "Component ID: ${componentId} Install State: $1"

        ${If} $1 == '3' ; installed on local drive
            StrCpy $0 '1'
        ${ElseIf} $1 == '4' ; run from source, CD or net
            StrCpy $0 '1'
        ${ElseIf} $1 == '-3' ; Path  to the component returned more data than our buffer can handle. Which means we do have this installed.
        ${Else}
            StrCpy $0 '0'
        ${EndIf}

        Pop $1
        Exch $0
    FunctionEnd
!macroend

When invoked, this macro will generate a function, with the give name that will search for the specified Component ID. So the code to detect Excel 2003 becomes:

!insertmacro GenerateMsiSearch "IsExcelInstalled" "{A2B280D4-20FB-4720-99F7-40C09FBCE10A}" ; Version 2003

Section "MainSection" SEC01 ; Determine whether the user has the required version of Excel installed
	Call IsExcelInstalled
	Pop $0
	${If} $0 == '0'
		MessageBox MB_OK "A compatible version of Microsoft Office Excel was not found. Setup cannot continue."
		Abort
	${EndIf}

So, why did I make this a macro that generates a function, and not just a function that accepts the component ID as a parameter? Well, parameter passing is not that straight forward with NSIS, and I believe this leads to much cleaner code at the end.

Step 6: Ensuring .NET 2.0 Runtime is Present

You can find plenty of ways to do this on NSIS web site. Here's one of them.

Step 7: Ensuring VSTO is Present


!insertmacro GenerateMsiSearch "IsVstoInstalled" "{D2AC2FF1-6F93-40D1-8C0F-0E135956A2DA}"

Function InstallVSTOSE

	Call IsVstoInstalled
	Pop $0

	${If} $0 == '0'
		SetOutPath '$TEMP'
		SetOverwrite on

		Banner::show /NOUNLOAD "Microsoft VSTO SE..."
		File 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vstor\vstor.exe'
		ExecWait '$TEMP\vstor.exe /q:a /c:"install"' $1 ; '$TEMP\vstor.exe /q:a /c:"install /q"' $1
		Delete '$TEMP\vstor.exe'
		Banner::destroy

		${If} $1 == '0'
			DetailPrint "VSTO 2005 SE was installed successfully."
		${ElseIf} $0 == '3010'
			SetRebootFlag true
		${Else}
			DetailPrint 'VSTO 2005 SE Installation failed with error $1'
			Abort
		${EndIf}
	${Else}
		DetailPrint 'VSTO 2005 SE already installed.'
	${EndIf}
FunctionEnd

We now have the scripts in place to deploy the application components as well as the to determine all prerequisites are available. All that is left is to add the boiler place Update Manifest and Set Security code. Easiest way to do this is to bring the code over a new .NET EXE project and pass the installation-dependent (e.g. Installation Path etc.) parameters as command line arguments. You can then execute the EXE as the last step of the installation.

Tagged as: , , No Comments