I would like to ask you to sign up with the Best Hosting and read more web hosting reviews.

Creating Pidgin MSI

Category: Techie
12 Feb 2013
Written by Andy Hits: 20764

The main office IM tool is currently msn messenger. With its shutdown forthcoming, alternatives were needed.  A jabber service has been set up, but a client still needed to be deployed to all the end users.  We already deploy updates for flash, adobe reader, java etc via msi files.  Currently, there are no official pidgin msi files, but it is my preferred client.

Wix

Wix is an opensource microsoft tool for creating msi files. Its website is wixtoolset.org The theory is simple. Put some xml together in a wxs file, detailing the files to be installed, source and destination locatons.  This is then parsed using the candle program.  The wixobj file then needs to be compiled using light, hopefully producing a nice shiney msi file.  A real tutorial is available here on wix.tramontana.co.hu

Deployment Options

There are 2 options for deploying pidgin.
The first is using a precompiled exe installer, and copying to the target machine, then executing silently.
The other option is to take the pidgin-win32-bin zip file, and install all the files within this archive.

As, Pidgin has about 700 fiiles in the archive, I initially looked at this option, until I saw suggestions of how this was bad practice to install an exe, then run it.

Heat

To save generating by hand all the config required to install files from a directory, there is a tool supplied with wix called heat.

heat dir "pidgin-2.10.7/" -template product -gg -suid -sfrag 
-out pidgin-2.10.7.wxs -cg PidginFiles

This produces a wxs file with all the files in the directory specified, but needs some details updating:

<Product>
This needs Product name, manufacturer and version setting to relevant values

<Directory>
For the parent directory which it creates for all the components, I changed this to be the install directory, and then wrapped the components in a <DirectoryRef> tag:

<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="APPLICATIONROOTDIRECTORY"
Name="Pidgin"/>
</Directory>
</Directory>
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<Component Id="exchndl.dll"
Guid="{548FF497-E269-46D4-9346-1CFC325EDF9C}" />
......
</DirectoryRef>

<File>
I did a global find / replace of SourceDir\ to the location on my local disk

<Feature>
This needs a product feature title setting

Compiling

Like I said in my introduction, once a wxs file is configured, then all that needs to be done is run candle and light:

>candle pidgin-2.10.7.wxs
Windows Installer Xml Compiler version 3.7.1224.0
Copyright (C) Outercurve Foundation. All rights reserved.

pidgin-2.10.7.wxs

>light pidgin-2.10.7.wixobj
Windows Installer Xml Linker version 3.7.1224.0
Copyright (C) Outercurve Foundation. All rights reserved.

Pidgin Requirements

Pidgin needs GTK+ in order to run, which isn't supplied with the normal downloads.  The first msi I compiled did not include GTK, which is available with pidgin on sourceforce.  Once I downloaded the GTK zip, I extracted the files into pidgin-2.10.7\GTK then re-ran heat and the changes I made to the generated file.  I then was able to compile an msi with GTK included, so it can be deployed on the network as required

Start Menu

Its helpful to have a start menu entry too.  In order to add it to the start menu an additional entry is needed in the Directory section, and a DirectoryRef for it is needed, and it needs to be included in the feature:

<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Pidgin"/>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Pidgin"/>
</Directory>
</Directory>

<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut"
Guid="{40f2cec1-baac-4857-9d78-386a0e2cb738}">
  <Shortcut Id="ApplicationStartMenuShortcut"
      Name="Pidgin"
      Description="Pidgin Instant Messenger"
      Target="[APPLICATIONROOTDIRECTORY]pidgin.exe"
      WorkingDirectory="APPLICATIONROOTDIRECTORY"/>
    <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
    <RegistryValue Root="HKCU"
Key="Software\Microsoft\Pidgin"
Name="installed"
Type="integer"
Value="1"
KeyPath="yes"/>
</Component>
</DirectoryRef>
<Feature Id="MainApplication" Level="1" Title="Pidgin IM">
  <ComponentGroupRef Id="PidginFiles" />
  <ComponentRef Id="ApplicationShortcut" />
</Feature>

 

Attachments:
Download this file (pidgin-2.10.7.wxs)Pidgin WXS file[Download my installer for pidgin 2.10.7 which this article is based on]436 kB
Free Joomla 1.7 Templates designed by College Jacke