Unattended installation of SmartSVN

Note These instructions do NOT apply any more for SmartSVN version >= 9.

When deploying SmartSVN to many users, having everyone of them to go through the Setup wizard can be cumbersome. This article gives a short receipt on how to perform an unattended respectively quiet installation of SmartSVN.

First of all, download the Windows installer bundle with JRE. Unzip this file and start the setup*.exe. The executable will unpack the contained MSI installer to a sub-directory within the TEMP directory. You should find there smartsvn.msi and jre.cab. Take both files to an intermediate directory, say c:\temp\install and cd to that directory.

The installation itself is performed using the msiexec utility program which comes with every Windows installation. Following command will perform a full installation of SmartSVN to C:\Program Files\SmartSVN:

msiexec /q /log log.txt /i smartsvn.msi DIR_INSTALL="C:\Program Files\SmartSVN" JRECABFILE=jre.cab

Having the installation logged to the log.txt is not necessary, but will be helpful to trace possible problems.

The installation can be customized by skipping certain features from the installation using the REMOVE property. For instance:

msiexec /q /log log.txt /i smartsvn.msi DIR_INSTALL="C:\Program Files\SmartSVN" JRECABFILE=jre.cab ADDLOCAL=All REMOVE=featureShellExtFull,featureStatusCache

will skip the full shell integration and the Status Cache service. In the same way following features can be selected/deselected from the installation:

  • featureShellExt (Explorer Integration)
    • featureShellExtFull (Full Integration)
    • featureStatusCache (Status Cache)
  • featureAutostart (Automatic Start)
  • featureJre (Installation of the JRE)

Note: If you don’t want to install SmartSVN with its own JRE, you may download the installer bundle without JRE and perform the same procedure, just with having JRECABFILE=jre.cab skipped for the msiexec-call.

SmartSVN 6.5

We are proud to announce the release of SmartSVN 6.5.
SmartSVN is a graphical client for the Open Source version control system Subversion (SVN) and runs on all major operating systems, like Windows, Mac OS X and Linux.

SmartSVN targets professionals who demand a reliable, efficient and well-supported SVN client for their daily business.

Major new and improved features, most notably:

  • Revision graph improvements (e.g. merge arrows, branch filtering, search)
  • Log-related commands perform now approx. 5 times faster than SmartSVN 6
  • Easier management for projects with multiple working copies
  • A lot of usability improvements making your daily work-flow even more easier and stream lined.

Download SmartSVN 6.5

MSI-Installer does not overwrite files reliable

Some users reported that installing a new version of our SVN client SmartSVN over a previous version did not work correctly. Starting SmartSVN still showed the old version, although the installation process went well without any error message and the “Programs and Features” item of the Windows Control Panel showed the new installed version.

What has gone wrong? The most important information came from one user who told that he had copied the new .jar files from the SmartSVN intermediate build over the old SmartSVN installation, before installing the new SmartSVN version.

Unfortunately, I first could not reproduce the problem, because I used Altap Salamander, a classical two-pane file manager which I can recommend, to copy the files from the intermediate build over the old installation. But — thanks to the helpful tips in the WiX mailing list — I found out, that Altap Salamander copies files in a different way than the Windows Explorer. While the Explorer only changes the file’s modification time, Altap Salamander also updates the file’s creation time, an important detail when working with MSI.

According to the File Versioning Rules of the MSI SDK, the .jar files will be treated by MSI as user data and hence the creation and modification times define whether a file will be overwritten by an update: if the modification time is newer than the creation time, MSI will not overwrite the file when updating.

Originally, our WiX-script for one component/file looked like this

<Component Id="componentSmartsvnJar" Guid="...">
  <File Id="smartsvn.jar" Name="smartsvn.jar" Source="..." />
</Component>

I had to add a RemoveFile element to the component to ensure that the previously existing file always would be removed before installing the new file:

<Component Id="componentSmartsvnJar" Guid="...">
  <RemoveFile Id="smartsvn.jar" Name="smartsvn.jar" On="both"/>
  <File Id="smartsvn.jar" Name="smartsvn.jar" Source="..." />
</Component>

SmartSVN 6.5 beta

We are proud to announce the first beta version of
SmartSVN 6.5. SmartSVN 6.5 is compatible with SVN 1.6 and contains more than 70 new features and improvements. The most important changes are:

  • Significant Log Cache performance improvements
  • Revision Graph improvements: Displaying merge info, searching/filtering revisions and branches
  • Improved handling of multiple working copy roots
  • Applying patches
  • Advanced UI customization
  • Shell Integration improvements
  • Simplified handling of settings defaults

Download SmartSVN 6.5 beta

For a complete list of new features, improvements and fixed bugs, refer to the Change Log.

Start a Command Line Shell Window on Windows

When I right click a directory in our SVN client SmartSVN or Git client SmartGit on Windows — especially the latter, because it does not yet support all Git commands — I want to open a command line shell window.
Although it is easy to execute a command with cmd.exe, it seems not that obvious how to open a command line shell window.

Here is the solution:

  • open the Preferences and select the page to configure the directory command (in SmartSVN it is named Directory Command, in SmartGit Directory Tool)
  • in the Command input field specify the path to the cmd.exe, for my Windows XP system C:\Windows\system32\cmd.exe
  • in the Arguments input field enter
    /c "start pushd ""${directoryPath}"""

The arguments are the tricky part. Basically, the cmd.exe needs two arguments, /c and the command to execute. Because our command contains spaces, we need to wrap it in quotes. If the actual directory path contains spaces, we need to surround the placeholder with quotes by specifying double quotes. If, for example, the command would be executed for the path E:\my projects\foo, the second parameter will actually be
start pushd "E:\my projects\foo"

What does the switches and commands mean? The /c switch tells cmd.exe to execute the following command line parameter as command. The start command makes the command line window occur and the pushd seems to be some kind of hack to switch to the directory which is the next parameter.