VMware Horizon Community
Thinstall2
Enthusiast
Enthusiast

16-bit app can't find file in workingdirectory.

Its an old 16-bit school program (windows, not DOS).

tried with 4.0.4 and 4.5.0, Xp sp3 Swedish..

Tried with WriteCopy and Merged as default isolationmode..

When the app starts, it looks for some small files in its workingdirectory. But for some reason it can't find it.

As you can see in the logdump, it uses old 8.1-like naming convention like "C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???" instead of %programfiles%\skolavtalet\bokstavslek\lexicon.s

The related log-lines goes:

028471 0a20 0a60 WOW32.dll :0ffd024b->ntvdm.exe :0f00765c demFileFindFirst (== no prototype available ==)

028472 0a20 0a60 ntvdm.exe :0f0072d9->ntdll.dll :7c901225 RtlInitString (=323F720h->struct {USHORT Length=CACBh, USHORT MaximumLength=0h, PSTR Buffer=CACBh->"v\06h\BBh\01h\E0h\E8h\13h\02hZ]\E9h\0Aho\CAh\02h"}, PCSZ =FFEC0B0h->'C')

028473 0a20 0a60 ntvdm.exe :0f0072d9<-ntdll.dll :7c901225 RtlInitString ->void=void (=323F720h->struct {USHORT Length=28h, USHORT MaximumLength=29h, PSTR Buffer=FFEC0B0h->"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, PCSZ =FFEC0B0h->'C')

028474 0a20 0a60 ntvdm.exe :0f0072e9->ntdll.dll :7c927465 RtlOemStringToUnicodeString (=323F744h->struct {USHORT Length=CC00h, USHORT MaximumLength=20Ch, PWSTR Buffer=*323F978h->L"1252"}, =323F720h->struct {USHORT Length=28h, USHORT MaximumLength=29h, PSTR Buffer=*FFEC0B0h->"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, BOOLEAN ='\00h')

028475 0a20 0a60 ntvdm.exe :0f0072e9<-ntdll.dll :7c927465 RtlOemStringToUnicodeString

028476 0a20 0a60 ntvdm.exe :0f010a1e->ntdll.dll :7c901225 RtlInitString (=323F494h->struct {USHORT Length=D634h, USHORT MaximumLength=287h, PSTR Buffer=323F4E8h->"8;"}, PCSZ =323F624h->'C')

028477 0a20 0a60 ntvdm.exe :0f010a1e<-ntdll.dll :7c901225 RtlInitString ->void=void (=323F494h->struct {USHORT Length=3h, USHORT MaximumLength=4h, PSTR Buffer=323F624h->"C:\"}, PCSZ =323F624h->'C')

028478 0a20 0a60 ntvdm.exe :0f010a2a->ntdll.dll :7c927465 RtlOemStringToUnicodeString (=7FFDCBF8h->struct {USHORT Length=50h, USHORT MaximumLength=20Ah, PWSTR Buffer=*7FFDCC00h->L"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, =323F494h->struct {USHORT Length=3h, USHORT MaximumLength=4h, PSTR Buffer=*323F624h->"C:\"}, BOOLEAN ='\00h')

028479 0a20 0a60 ntvdm.exe :0f010a2a<-ntdll.dll :7c927465 RtlOemStringToUnicodeString

028480 0a20 0a60 ntvdm.exe :0f010b04->kernel32.dll:7c80fa75 GetVolumeInformationW+ (LPCWSTR lpRootPathName=7FFDCC00h->L"C:\", LPWSTR lpVolumeNameBuffer=0h, DWORD nVolumeNameSize=0h, LPDWORD lpVolumeSerialNumber=0h<null pointer> <bad ptr>, LPDWORD lpMaximumComponentLength=0h, LPDWORD lpFileSystemFlags=0h<null pointer> <bad ptr>, LPWSTR lpFileSystemNameBuffer=2080A60h->L"\F720h\0207h\PROGRAM\SKBURK5\BOA3255\", DWORD nFileSystemNameSize=104h)

028481 0a20 0a60 ntvdm.exe :0f010b04<-kernel32.dll:7c80fa75 GetVolumeInformationW+ ->int=1h (LPCWSTR lpRootPathName=7FFDCC00h->L"C:\", LPWSTR lpVolumeNameBuffer=0h, DWORD nVolumeNameSize=0h, LPDWORD lpVolumeSerialNumber=0h<null pointer> <bad ptr>, LPDWORD lpMaximumComponentLength=0h, LPDWORD lpFileSystemFlags=0h<null pointer> <bad ptr>, LPWSTR lpFileSystemNameBuffer=2080A60h->L"NTFS", DWORD nFileSystemNameSize=1h)

028482 0a20 0a60 ntvdm.exe :0f010b45->ntdll.dll :7c901295 RtlInitUnicodeString (=323F4ACh->struct {USHORT Length=AA18h, USHORT MaximumLength=20Ah, PWSTR Buffer=2080A60h->L"NTFS"}, PCWSTR =2080A60h->L"NTFS")

028483 0a20 0a60 ntvdm.exe :0f010b45<-ntdll.dll :7c901295 RtlInitUnicodeString ->void=void (=323F4ACh->struct {USHORT Length=8h, USHORT MaximumLength=Ah, PWSTR Buffer=2080A60h->L"NTFS"}, PCWSTR =2080A60h->L"NTFS")

028484 0a20 0a60 ntvdm.exe :0f010b54->ntdll.dll :7c9271ea RtlUnicodeStringToOemString (POEM_STRING =323F4A4h->struct {USHORT Length=FFFEh, USHORT MaximumLength=105h, PSTR Buffer=323F520h->"qD{\02hh\D2h\98h\02h\A4h\F5h#\03hK\8Bh\86h\02h"}, PCUNICODE_STRING =323F4ACh->struct {USHORT Length=8h, USHORT MaximumLength=Ah, PWSTR Buffer=2080A60h->L"NTFS"}, BOOLEAN ='\00h')

028485 0a20 0a60 ntvdm.exe :0f010b54<-ntdll.dll :7c9271ea RtlUnicodeStringToOemString

028486 0a20 0a60 ntvdm.exe :0f010bcc->ntdll.dll :7c90ff0d RtlFreeHeap (HANDLE =2070000h, ULONG =0h, PVOID =*2080A60h)

028487 0a20 0a60 ntvdm.exe :0f010bcc<-ntdll.dll :7c90ff0d RtlFreeHeap ->char='\01h' (HANDLE =2070000h, ULONG =0h, PVOID =*2080A60h)

028488 0a20 0a60 ntvdm.exe :0f0077f2->ntdll.dll :7c9142d5 RtlDosPathNameToNtPathName_U

028489 0a20 0a60 ntvdm.exe :0f0077f2<-ntdll.dll :7c9142d5 RtlDosPathNameToNtPathName_U ->char='\01h' (PCWSTR =*323F978h->L"C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???", =323F6F0h->struct {USHORT Length=58h, USHORT MaximumLength=21Ah, PWSTR Buffer=*2080370h->L"\??\C:\PROGRAM\SKBURK5\BOA3255\LEXICON.???"}, =323F440h->*20803B2h->L"LEXICON.???", =0hntdll.dll :7c913412 RtlCreateUnicodeString (=323F6F8h->struct {USHORT Length=0h, USHORT MaximumLength=0h, PWSTR Buffer=0h<null pointer> <bad ptr>}, LPCWSTR =20803B2h->L"LEXICON.???")

028491 0a20 0a60 ntvdm.exe :0f00780e<-ntdll.dll :7c913412 RtlCreateUnicodeString ->char='\01h' (=323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=2082A40h->L"LEXICON.???"}, LPCWSTR =20803B2h->L"LEXICON.???")

028492 0a20 0a60 ntvdm.exe :0f007902->ntdll.dll :7c90d580 NtOpenFile+ (PHANDLE =323F4B4h->0h, ACCESS_MASK =100001h, =323F3FCh->struct {ULONG Length=18h, HANDLE RootDirectory=0h, ObjectName=400323F6h , ULONG Attributes=0h, PVOID SecurityDescriptor=0h<null pointer> <bad ptr>, PVOID SecurityQualityOfService=F1BA9800h}, =323F414h->struct {ULONG_PTR Information=E2F1BA98h}, ULONG =7h, ULONG =4021h)

028493 0000 0a60 NtOpenFile DesiredAccess=0x100001 ObjAttrib=323f3fc (RootDir=0 SD=0 SQoS=0 Attrib=40h OBJ_CASE_INSENSITIVE Name=323f6f0 (Len=64 Buffer=2080370 )) Iosb=0x323f414 ShareMode=0x7 FILE_SHARE_DELETE FILE_SHARE_READ FILE_SHARE_WRITE Options=0x4021 FILE_DIRECTORY_FILE FILE_SYNCHRONOUS_IO_NONALERT FILE_OPEN_FOR_BACKUP_INTENT -> 0x0 hFile=148 (success)

028494 0a20 0a60 ntvdm.exe :0f007902<-ntdll.dll :7c90d580 NtOpenFile+ ->long=0h (PHANDLE =323F4B4h->148h, ACCESS_MASK =100001h, =323F3FCh->struct {ULONG Length=18h, HANDLE RootDirectory=0h, ObjectName=400323F6h , ULONG Attributes=0h, PVOID SecurityDescriptor=0h<null pointer> <bad ptr>, PVOID SecurityQualityOfService=0h}, =323F414h->struct {ULONG_PTR Information=0h}, ULONG =7h, ULONG =4021h)

028495 0a20 0a60 ntvdm.exe :0f0079e1->ntdll.dll :7c90d750 NtQueryDirectoryFile+ (HANDLE =148h, HANDLE =0h, PIO_APC_ROUTINE =0h<null pointer> <bad ptr>, PVOID =0h, =323F414h->struct {ULONG_PTR Information=0h}, PVOID =*2086B98h, ULONG =400h, FILE_INFORMATION_CLASS =enum, BOOLEAN ='\00h', =323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=*2082A40h->L"LEXICON">>>"}, BOOLEAN ='\00h') 028496 0a20 0a60 ntvdm.exe :0f0079e1<-ntdll.dll :7c90d750 *** NtQueryDirectoryFile+ ->long=C000000Fh (HANDLE =148h, HANDLE =0h, PIO_APC_ROUTINE =0h<null pointer> <bad ptr>, PVOID =0h<null pointer> <bad ptr>, =323F414h->struct {ULONG_PTR Information=0h}, PVOID =*2086B98h, ULONG =400h, FILE_INFORMATION_CLASS =enum, BOOLEAN ='\00h', =323F6F8h->struct {USHORT Length=16h, USHORT MaximumLength=18h, PWSTR Buffer=*2082A40h->L"LEXICON">>>"}, BOOLEAN ='\0Fh') *** GetLastError() returns 2=0x2 : Det går inte att hitta filen.

_______________________________________________

It cant find the file, which is called lexicon.s. Im not sure why the pattern goes "LEXICON.???", If i remember my expressions right that would require an extension with three letters to satisfy, but it didn't help to create a copy named LEXICON.SSS so Im probably out swimming :face_with_tongue:

Of course the program works natively, and if I rename or remove lexicon.s from the native folder, the native program gives the very same error as the virtual.

I've tried the following.

ChildProcessEnvironmentDefault=External,

ChildProcessEnvironmentExceptions=wow32.dll;

VirtualizeExternalOutOfProcessCom=0.

The only progress I can make is if i change the isolation of %ProgramFilesDir%\Skolavtalet\bokstavslek\ from Full to WriteCopy, then it seems to find at least the native file from my native installation.

The virtual cmd-session sees all files

The entrypoint looks like this

http://Bokstavslek.exe

ReadOnlyData=bin\Package.ro.tvr

Source=%ProgramFilesDir%\Skolavtalet\Bokstavslek\BOKSTAV.EXE

WorkingDirectory=%ProgramFilesDir%\Skolavtalet\Bokstavslek\

CommandLine="%ProgramFilesDir%\Skolavtalet\Bokstavslek\BOKSTAV.EXE" SAVEDIR=C:\Program\Skolavtalet\Bokstavslek\

Icon=%SystemRoot%\Installer\{5EB3F63C-EF7A-4464-8C7D-8D556762E8CA}\Bokstav.ico

Shortcuts=%Programs%\Skolavtalet\Bokstavslek

And as you see WorkingDirectory is set.

Is windows virtual dos forced to run external somehow?

Any help would be greatly appreciated!

Reply
0 Kudos
3 Replies
Theike
Hot Shot
Hot Shot

Hi,

The path used is not the real 'short filename format' (8.3), as in that way it would be shortened to ABCDEF~1.XXX (it numbers it at the end then). For some reason the file names are incorrectly resolved.

Check your entrypoint definition (package.ini) and configuration files of the application if there the 'short format' is used...

To get it operational, you could of course just install it in the C-root in a 8.3 compatible folder. I know it is a wor-around, but it at least would work.

Kind regards,

Michael

Michael Baars - Comprehensive ICT Solutions (NL, Weert) (Remember to mark the post answered and reward points to those who helped you...)
Thinstall2
Enthusiast
Enthusiast

thank you for bothering replying.. ill give you a helpful answer for that :face_with_tongue:

Ok, Im not so famiiar with old dos-stuff so i jpmed to conclusions there.

But i tried to create the filestructure that the log cries about, but still a fail..

I havent got enough time for this shity old school application (its a huge dvd whereas one app, a couple of MB's was the only one to fail)

So i ended up installing that particular app as a native msi, putting it in the same startmenu folder..

Reply
0 Kudos
muriwai
Enthusiast
Enthusiast

Hello,

Thank you for reporting the issue. I reproduced the problem and confirmed it's a bug in ThinApp. I submitted an internal bug report; the bug will be fixed in one of the next versions of ThinApp. I apologize for the inconvenience.

Best regards,

muriwai

Reply
0 Kudos