Wiki
Clone wikiexec_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.
-
Copy
ExecSkipDots.exe
to the folder wherePortProg.exe
resides; -
Rename
ExecSkipDots.exe
to"PortProg.SomeLabel.exe"
("SomeLabel" can be anything Windows allows); -
Locate the file
PortProgPortable.ini
in theApp\AppInfo\Launcher
subfolder and open it for editing; -
Find the
ProgramExecutable=...
line in the[Launch]
section of this file; -
Replace
PortProg.exe
withPortProg.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