VMware Horizon Community
mclark
Expert
Expert

Application compatibility problem

I have an application that I am trying to ThinApp, which is TimePro by Commeg Systems. I ran the program through ThinApp, and I put the resulting EXE on a network share. The program was installed and ThinApp'ed under Windows 7, and it runs fine when run normally (not as a ThinApp). As soon as I try to run the ThinApp version of it on the same Windows 7 machine (after reverting to the pre-install snapshot), I get a Fatal Application Exit error dialog box that says "Missing Ordinal C:\TimeproSQL\comdlg32.dll->SHELL32.dll:96". I found that if I copy the ThinApp'ed EXE to the local drive and set the compatibility mode to "Windows XP SP3" it runs fine. I don't want to copy the ThinApp'ed EXE to the local drive, but Windows won't let you set compatibility on a network location via Properties. I ran the ThinApp on the network share through the App Compatibility wizard and it runs fine when the wizard sets the compatibility and you test it with the test button, but as soon as you try to run the ThinApp'ed EXE from outside of the compatibility wizard, it crashes again. I verified that the compatibility mode was saved in the registry.

My question is two-fold: 1) Why won't the ThinApp run when the regular app will, and 2) does anyone have a trick to make the ThinApp'ed EXE run in compatibility mode from the network share? I am clueless as to why it runs fine while in the compatibility wizard but not outside of it.

Thanks.

Reply
0 Kudos
11 Replies
pbjork
VMware Employee
VMware Employee

In package.ini in the section for your Entry Point have you specified WorkingDirectory=c:\TimeproSQL? Might not help but a first step..

Reply
0 Kudos
mclark
Expert
Expert

Here is the section for the entry point. It shows the working directory line.

[TimeproSQL.exe]
Shortcut=TimeproSQL.dat
Source=#25drive_C#25\timeprosql\TimeproSQL.exe
;Change ReadOnlyData to bin\Package.ro.tvr to build with old versions(4.6.0 or earlier) of tools
WorkingDirectory=#25drive_C#25\TimeproSQL
Shortcuts=%Desktop%;#25drive_C#25\TimeproSQL

Reply
0 Kudos
pbjork
VMware Employee
VMware Employee

#25 should stand for % and should work so that seems not to be the case.. Just so I understands completely.. Have you gone through these steps and when does the package fail?

http://blogs.vmware.com/thinapp/2010/10/thinapp-troubleshooting-methods.html

Knowing exact when the package fails will tell us a lot..

mclark
Expert
Expert

I tried to run the ThinApp while the application is still "installed", and it fails with the same error as on a clean machine.

FYI, this application does not do a true install, you just copy the folder to the hard drive and then run a batch file that registers some DLLs and sets some regisry settings.

Reply
0 Kudos
pbjork
VMware Employee
VMware Employee

Failing during "Dirty Test" isn't a good sign. Might be a tough one..

Could activate cmd.exe entry point within the package and from virtual cmd.exe navigate to the exe and try to start it from cmd?

Reply
0 Kudos
mclark
Expert
Expert

I've never done the CMD thing before, so hopefully I did this right. I enabled CMD.EXE in package.ini and rebuilt. I then ran CMD.EXE from the bin folder, and from in there ran TimeProSQL.EXE. That failed with the same error as before, missing ordinal.

As I mentioned at the front of this, the application will run if I set the compatibility mode of the ThinApp package to Windows XP SP3 (Even though it runs fine non-virtually). So if I could get Windows to set compatibility on the ThinApp package on a network share, that would suffice. I just don't want to have to copy the ThinApp package down to the virtual desktop after a recompose, etc.

Reply
0 Kudos
mclark
Expert
Expert

Do you have any other suggestions or help on this? I'd like to get it working if I can... Thanks.

Reply
0 Kudos
pbjork
VMware Employee
VMware Employee

Not running within cmd.exe is not a good sign. Normally that would qualify for a support ticket.. The fact it’s running in XP mode is good though. Unfortunate have I no more ideas how you might find out the root cause.. Hope someone else have something clever to share..

mclark
Expert
Expert

Thanks. I submitted a ticket based on your suggestion. We'll see what happens. I'll post back with the results.

Reply
0 Kudos
mclark
Expert
Expert

Thanks to VMware Support, found that removing the comdlg32.dll file from the application folder before building fixed the problem.

Reply
0 Kudos
shrivastavaa
Enthusiast
Enthusiast

For Archives; This problems comes if a sandbox dll has dependency on a system dll. Now DLL exports functions by name or by ordinal (number). The error reported here tells us that a specific functition is missing from the dependent DLL. Typically it happens where MS does not expect us to run DLLs from different systems. For example comdlg from XP and shell32 from windows7.

Two ways to solve this are

1) Either remove the dll from the package; which will alow thinApp to load it from system; which anyways is the prefered solution as it will resolve the dependency on all systems.

2) In rare cases when the dll is not available on all platforms; one can include all its dependencies from the capture system in package and that should solve it as well. This approach will remove any dependency from system.(Though finding exact dependencies could be tricky at times).

Reply
0 Kudos