Create Portable Application


Hi Experts,

I would like to have Expert help to create a portable application. I've tried few times using Thinstall but, for some reason, the portable file seems not working.

The reason I need this file is some of my client intents to use this service (DigiDelivery) but the client software installation requirements caused rejection. I hope Experts could help me to create a portable file for this application so that the user can avoid an installation requirement.  

I can't upload this file in EE, therefore I use RS.
http://rapidshare.com/files/373163337/DigiDelivery-2.1.1.zip.html
ThevaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

rindiCommented:
Not all apps can be made portable. Particularly if they require certain extra components installed that aren't default in an OS, but that still aren't part of the app, it won't work, or at least not on all PC's. Usually apps that depend on .NET for instance won't work. Other issues are if the app interacts directly with low-level components which are usually managed by the OS.
0
dbruntonCommented:
Such as registry operations or placing files in the Windows folder or registering DLLs.

This application requires at least 2 DLLs which may or may not be on the machines concerned but are included in the package.  You would have to test which OS you are going to install this on as well.  It supports 2000 or XP and you'd have to select the correct DLL to install as well.  There is also a third DLL that needs installing as well for what looks like Unicode support.

It also has a specific range of ports for operation and requires Internet Explorer 6.0 or better.

See http://www.digidesign.com/index.cfm?langid=23&navid=38&itemid=4810&action=news_details

You might be better off by contacting DigiDelivery and see if they can help.
0
BillDLCommented:
I think you have the best advice from dbrunton, ie. contact DigiDelivery to see if they have a "portable" version available.  Actually, the support for the client is now with "AsperaSoft":  http://www.asperasoft.com/

"As from September 2007, Aspera, Inc. has assumed all ongoing DigiDelivery development, manufacturing, sales, and support.   The DigiDelivery client software for Windows and OS X is now available from Aspera on their web site."

You can request support for the DigiDelivery in the Aspera web form here:
http://www.asperasoft.com/support/
Perhaps they have some Developer tools that would help you with what you want, but that area of the site is login only.

The Zip file you linked to on RapidShare contains a Windows Installer *.MSI file that is exactly the same (version number and byte-by-byte comparison) with the officially downloadable one here:

http://www.asperasoft.com/downloads/digi-client

I don't know anything about Mac platform, so the Mac OS X Intel and Mac OS X PPC (G4 or G5) downloads would be a mystery to me.  However the direct download link on the above page for Version 2.1.1 Windows Platform is:

http://www.asperasoft.com/download/sw/digi-client/DigiDelivery-2.1.1.msi

Remember that it will contravene all kinds of licensing agreements if you start modifying executables and DLLs to customise them.  That said, however, you may be able to gain a bit more of an insight into whether or not the program would be able to work by looking at the installer package more carefully.

There is a developer tool intended to allow you to inspect and customise the database entries in a Windows Installer *.MSI packages.  The actual program is called "Orca".  I comes as part of the Windows Installer SDK:
http://support.microsoft.com/kb/255905
but that version has been superseded by the versions mentioned here:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

If you wish to actually extract the *.MSI files that are used for the setup and would be installed, then the free 7-Zip program (http://www.7-zip.org/) unpacks *.MSI files.  Sometimes it just extracts all the data as lots of separate resources that were used to build the setup package, but in this case it is useful and also unpacks a "Data1.cab" file amongst all of the others.  Unzip "Data1.cab" to its own folder and you will have the following files:

atl70_dll_10_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
atl70_dll_8_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
Digid3PUtil.dll
DigiDelivery.exe
DigiDelivery2.0ReadMe.pdf
DigiDeliveryClientGuide.pdf
DigidSupport.dll
FL_mscvp70_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
mfc70_dll_2_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
mfc70u_dll_1_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
msvcr70_dll_20_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
Parser_pts11.dll
test.txt

The ones with the long names I believe will only be installed to the system if required.  Ignoring the *.PDF files, the core program files are:

Digid3PUtil.dll
DigiDelivery.exe
DigidSupport.dll
Parser_pts11.dll

Now, what I suggest you do is check each of those files using "Dependency Walker".  It is usually installed from Windows Support tools as "depends.exe" but may also be downloaded and installed from here:
http://www.dependencywalker.com/

The idea here is to see exactly what files are dependent on, and vice-versa, the above 4 files.  That may give a reasonable indication of whether the program can run as a self-contained portable version or not.

I don't see any specific "REG" resources in the EXE or DLLs whereby they write that data to the registry of the computer when run or called, but it is probable that they do.

If you have a test-bed computer like a Windows XP system that you would be prepared to format and do a fresh installation on, then you could export a *.REG file before trying to run "DigiDelivery.exe" from its own folder, and then export a *.REG file after it either runs or fails to run.

A good free utility for doing side-by-side comparisons of *.REG files is "ExamDiff" by PrestoSoft:
http://www.prestosoft.com/edp_examdiff.asp
Installer:
http://www.prestosoft.com/download/ed18_setup.exe
Standalone:
http://www.prestosoft.com/download/ed18.zip

There is a "Pro" version with extended functionality, but I prefer "Beyond Compare" as a retail version (http://www.scootersoftware.com/).

Your best option is to contact Aspera (http://www.asperasoft.com/support/) as suggested by dbrunton.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

BillDLCommented:
And by the way, the method normally used by "tweakers" who modify install-only programs to be totally self-contained and portable is to force the program to write out all the settings to an *.INI, *.XML, or text/xml/binary "config" file rather than to the Registry.

To do that you need to modify the program, and that would be in breach of licence for the program you are talking about.
0
ThevaAuthor Commented:
Hi BillDL,

Thanks for detail explanation and the links. Its very helpful for me.

Thanks to dbrunton and rindi
0
BillDLCommented:
Thank you Theva.  I should have mentioned that it looks like the folder the program would be installed to is:
%SystemDrive%\%ProgramFiles%\Aspera\DigiDelivery\

So, if you were to test it out, the "Parser_pts-1-1.dll" belongs in a "Plugins" sub-folder like this:

YourTestFolder
|           |
|           Digid3PUtil.dll
|           DigiDelivery 2.0 Read Me.pdf
|           DigiDelivery Client Guide.pdf
|           DigiDelivery.exe
|           DigidSupport.dll
|
\---Plugins
         |
         Parser_pts-1-1.dll

I can immediately see that DigiDelivery.exe tries and fails to load (because it can't find) "ATL70.DLL" and "MFC70U.DLL".  These, along with atl70.dll, atl70.dll (unicode), mfc70.dll, mfc70u.dll, msvcp70.dll, msvcr70.dll, are the files that dbrunton was referring to.

What you do not want to be doing is placing copies of these files in the same folder as "DigiDelivery.exe".  It may seem like a good idea because a program will usually look for its support files in the same folder as the program's EXE first, and it may work with the odd DLL for some other programs, but these files are intended to be in a System Folder and shared by other applications.

If you already have a program running that is using a particular DLL file, and then run another that finds and uses the same DLL from another folder, you can end up with a bunch of conflicts.

Windows XP improved this aspect of different DLL versions of the same name clashing with each other by using what they call "Side by Side Versioning" (SxS).  DLL files such as those mentioned above are usually stored in separate sub-folders of "C:\WINDOWS\WinSxS" with manifests, etc, so as to keep them apart but available for use by the specific applications that need that particular version:
http://msdn.microsoft.com/en-us/library/aa376307(VS.85).aspx

I'm not really in the position to mess around too much with it on this system though.  As I mentioned, if you have a system you can use to test out things and not worry if it gets messed up, then try and move ATL70.DLL and MFC70U.DLL into the test folder with DigiDelivery.exe and run it.  If it errors out, then try the other DLLs in there and see what happens.

In the end though, I don't think you will get this program to run as a "portable" application that doesn't mess with the system it is being hosted on.
0
dbruntonCommented:
>> I can immediately see that DigiDelivery.exe tries and fails to load (because it can't find) "ATL70.DLL" and "MFC70U.DLL".  These, along with atl70.dll, atl70.dll (unicode), mfc70.dll, mfc70u.dll, msvcp70.dll, msvcr70.dll, are the files that dbrunton was referring to.

>> What you do not want to be doing is placing copies of these files in the same folder as "DigiDelivery.exe".  It may seem like a good idea because a program will usually look for its support files in the same folder as the program's EXE first, and it may work with the odd DLL for some other programs, but these files are intended to be in a System Folder and shared by other applications.

I actually did try it without and with some of those dll files dropped into a folder with DigiDelivery.  Without it complained about missing dlls.  I found copies in my Visual Studio folder and copied across and tried again.  This time I got a missing location in dll file such and such so that was where I stopped my testing.
0
BillDLCommented:
I never got that far.  Wasn't brave enough to mess, although I sometimes do.  I stuck to dependency walker, and that's what flagged up the first two.
0
ThevaAuthor Commented:
Hi BillDL & dbrunton,

Thanks for the extensive test and wiliness to share your finding with me.  
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Software

From novice to tech pro — start learning today.