Wiki

Clone wiki

exec_skip_dots / Home


OVERVIEW

PortableApps.com offers an excellent platform for running, from removable media, programs that are meant to be installed on a hard drive. As a side benefit, it also allows one to test various versions of programs without polluting the Windows environment by installing them. In this context, a problem arises if the tested program has a version already installed in the OS, used in the same time with a different (portable) tested version. In such a case, there is a serious risk of Registry pollution, but there are programs for which this risk can be easily mitigated, at least for testing purposes.

However, in such fortunate cases, the Launcher stands in the way. After the Launcher starts a program, it remains loaded in memory, and actively monitors this program so it can do any required clean-up after it exits. The problem is that the Launcher identifies the target it monitors using only the program's file name, not also its path. Therefore, if another version of the program (i.e. the installed one) is running when a portable version exits, its Launcher will be confused by the matching names and will continue to monitor the wrong version (last tested with version 12.0.5 of the PortableApps.com Platform).

As this usage scenario is very far from the mainstream use cases of the PortableApps.com Platform, and because this is a difficult to fix problem (for legacy reasons), there is almost no chance this issue will be addressed in the near future. ExecSkipDots.exe was designed to fix this issue for now (for programs that don't allow their exe to be renamed).

ExecSkipDots.exe

This small Windows program analyzes the name used to execute it. If it finds more than one dot in its name, it will generate a new program name by replacing everything after the first dot with "exe". It will then run the program with this name (if available in its own folder), wait for it to finish, and exit. If it is properly renamed and placed in the launch chain of a PortableApps.com program, ExecSkipDots.exe will provide a unique name to be monitored by the Launcher, thus allowing multiple versions of the same program (portable or not) to be run concurrently (but ONLY if the Launcher's name confusion is the last remaining issue stopping this).

If the program's name doesn't have two or more dots, it will just display a help screen when it is executed.


HOW TO USE IT

Usage Example

For illustration purpose, the program to be executed is named PortProg.exe, part of a PortProgPortable subfolder of a PortableApps.com root.

  1. Copy ExecSkipDots.exe to the folder where PortProg.exe resides;

  2. Rename ExecSkipDots.exe to "PortProg.SomeLabel.exe" ("SomeLabel" can be anything Windows allows);

  3. Locate the file PortProgPortable.ini in the App\AppInfo\Launcher subfolder and open it for editing;

  4. Find the ProgramExecutable=... line in the [Launch] section of this file;

  5. Replace PortProg.exe with PortProg.SomeLabel.exe at the end of this line and save the file.

If it makes sense for your use case, you can use Resource Hacker (or a similar program) to copy the icon group(s) from PortProg.exe to PortProg.SomeLabel.exe and/or change the "Description" field of its "Version Info" resource to something relevant.

Usage Warning

The PortProgPortable.ini file contains settings related to the Registry and the File System interactions of the portable version of ProgPort.exe with your system; you should address any other issues that could affect the simultaneous execution of multiple versions of PortProg.exe before trying to do it.

Debug Feature

For debug purposes, if the last dot in the program's name is doubled (as in PortProg.SomeLabel..exe) a message box (showing the command line to be used) will pop up before PortProg.exe is started, allowing its execution to be canceled.


HOW TO GET IT

The Latest Version

The latest version of this program is 1.0.0. There is no previous version.

The Win32 Program

The zipped executable can be downloaded from the project's Downloads page. Unzip it and use it anyway you see fit. The program was tested only on Windows XP SP3 (32-bit), but I don't see any reason it shouldn't work fine on more recent Windows versions.

The Source Code

The zipped source code can also be downloaded from the Downloads page. It was built with Orwell Dev-C++ version 5.11, using the TDM-GCC 4.9.2 32-bit compiler. Unzip it in a folder and open the ExecSkipDots.dev file with Dev-C++. The source code is released under a MIT license ... enjoy.


FINAL THOUGHTS

I made this program for my own experiments, as I tend to find myself at the wrong end of "typical usage scenarios". I have used it with various versions of Opera, Chrome, and other web browsers.

I am releasing it as open source, in case there are other people stuck in such situations, but I am not planning to add any features to it. If you find it useful, I would appreciate if you could drop me a note using the project's Issues page.

Updated