VMware Horizon Community
freythman
Enthusiast
Enthusiast
Jump to solution

Scanning with ThinApps

I work in a clinical environment, and one of the applications we are ThinApp'ing will be utilized by persons performing registration, and  will require for documents to be scanned into the application from ADF scanners.

Initial attempts to have the ThinApp'd app scan have proven unfruitful. The application seems to be able to see the scanner. When I click on the menu that lets me choose a scanner,  it is listed in the dropdown list correctly. However, when I actually  attempt to scan, the application gives an error message stating that it  cannot communicate with the scanner. My suspicions are that the scanner  isn't able to communicate back with the process from the app that is  initializing the scan, since the app is in the virtual environment, and  the scanner is not. The message generated also includes references to the scanner model.

Here  are some methods I've attempted in order to get this going. I'll admit,  I'm definitely not a guru when it comes to reading out logmon reports, so I may be going the wrong direction with this.

  • ChildProcessEnvironementDefault=External to force Child processes to load in the physical environment
  • AllowExternalProcessModifications=1
  • ExternalDLLs= listing all of the dll's it seems the application uses to scan

Does  anyone have any insight on what would be needed to get this application to scan? I do realize that virtualizing the twain drivers is not possible, but I didn't know if that meant that working with twain scanners from within a ThinApp was impossible as well.

Any feedback or direction would be appreciated.

0 Kudos
1 Solution

Accepted Solutions
freythman
Enthusiast
Enthusiast
Jump to solution

I've been able to successfully get the ThinApp package to scan with our Fujitsu scanner. I've tested it with the Epic client, as well as the Fujitsu ScanDall application that is bundled with our scanners. I'm sorry for posting again, but I wanted to make sure that if anyone else ran into a similar problem, they would be able to find this resolution.

According to this article, a CLISD has to be added to the Wow6432Node in the registry to allow the ThinApp to see imaging devices, using the proper .dll files from C:\Windows\Syswow64 instead of C:\Windows\System32. The article doesn't explicitly state that this change needs to take place on the physical machine running the ThinApp (not the capture machine or the virtual registry of the package), but I figured that out after some testing. Of course, this raises the question of, "how do I go about making this change to every machine that launches this ThinApp, that also needs to scan?"

I answered that question in the following method.

  1. Open the HKEY_LOCAL_MACHINE.txt and add the following line to the bottom of the package, ensuring to leave a blank line above it.

    isolation_merged HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\Interface\{E5332A98-80FD-463C-80E4-A8E370752906}

  2. Add the attached .vbs to the root of your ThinApp package. This script creates the needed registry values in the physical registry (since we previously made the isolation method merged) IF it's a 64-bit O/S and IF the keys don't already exist.

According to the kb article, the keys need to be added to HKEY_CLASSES_ROOT; however, there is not a HKCR.txt file for us to modify in the ThinApp package. Considering that HKCR\Wow6432Node is just a merged view of HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes and HKEY_CURRENT_USER\Software\Wow6432Node\Classes, I opted to use HKLM so that the change would be made for all users on the PC.

I hope this helps someone else, as it's been quite a battle for me over the past few weeks. Your mileage may vary, depending on the application and the scanner used.

View solution in original post

0 Kudos
8 Replies
Lakshman
Champion
Champion
Jump to solution

Have you tried installing the scanner driver locally on the system where you test out the ThinApp?

0 Kudos
freythman
Enthusiast
Enthusiast
Jump to solution

Yes I have the scanner driver installed (before the prescan) on the machine that the app was captured. Scanning does work with it locally installed. Scanning also works with the ThinApp running on top of the local install.

0 Kudos
Lakshman
Champion
Champion
Jump to solution

ThinApp cannot virtualize drivers. The scanner driver has to be installed locally on all the deployment machines so that the ThinApp (without scanner driver) can invoke them.

0 Kudos
Lakshman
Champion
Champion
Jump to solution

Please see here for the limitations of ThinApp:

http://kb.vmware.com/kb/1007424

0 Kudos
freythman
Enthusiast
Enthusiast
Jump to solution

I do realize that. The driver is installed on the machine that I'm testing with, which also doesn't have a local install of the application. Is scanning impossible with ThinApp?

0 Kudos
Lakshman
Champion
Champion
Jump to solution

Should be possible. If the scanner driver is a kernel mode driver, try adding the below line in the package.ini, rebuild and test.

AllowExternalKernelModeServices=1

0 Kudos
freythman
Enthusiast
Enthusiast
Jump to solution

Back at it some more today. I've discovered that the scanner appears to be writing to %appdata%\Fujitsu, so I created this folder in the package and gave it "merged" isolation, but still no go.

I've attached the error message generated by the app when you try to scan. As you can see, it refers to the scanner itself (which is a Fujitsu FI-6130z). Not sure if that helps any.

Edit:

I've put in some more dev and test time, and here's where I'm at so far. The application in question is Epic Hyperspace, which is a 32-bit application. The capture machine we're using is using Windows 7 32-bit. We are now able to scan successfully using several Windows 7 32-bit machines, but not on Windows 7 64-bit. I haven't had to make any changes to have Windows 7 32-bit scan, but I just didn't realize that scanning worked it until I tested it with a Win7 32-bit VM. Most of our machines on campus that have Win7 installed have the 64-bit version, so that's why I didn't think to check that before.

I've tried capturing on a Windows 7 64-bit machine, and installing to a unique location (i.e. C:\Epic) instead of to the Program Files Directory. No dice. I've also tried uncommenting the ;Wow64=0 line in the package.ini file, and that didn't help, either. I'm going to dig through trace files from Log Monitor today to see if I can come up with anything. I'm hoping that comparing a logmon trace file from a 32-bit machine where scanning is working to a 64bit machine where it isn't will reveal a missing dependency or something useful.

On an side note. I feel like to truly be a ninja at ThinApp, one would also need to be pretty savvy at programming, as well.

0 Kudos
freythman
Enthusiast
Enthusiast
Jump to solution

I've been able to successfully get the ThinApp package to scan with our Fujitsu scanner. I've tested it with the Epic client, as well as the Fujitsu ScanDall application that is bundled with our scanners. I'm sorry for posting again, but I wanted to make sure that if anyone else ran into a similar problem, they would be able to find this resolution.

According to this article, a CLISD has to be added to the Wow6432Node in the registry to allow the ThinApp to see imaging devices, using the proper .dll files from C:\Windows\Syswow64 instead of C:\Windows\System32. The article doesn't explicitly state that this change needs to take place on the physical machine running the ThinApp (not the capture machine or the virtual registry of the package), but I figured that out after some testing. Of course, this raises the question of, "how do I go about making this change to every machine that launches this ThinApp, that also needs to scan?"

I answered that question in the following method.

  1. Open the HKEY_LOCAL_MACHINE.txt and add the following line to the bottom of the package, ensuring to leave a blank line above it.

    isolation_merged HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\Interface\{E5332A98-80FD-463C-80E4-A8E370752906}

  2. Add the attached .vbs to the root of your ThinApp package. This script creates the needed registry values in the physical registry (since we previously made the isolation method merged) IF it's a 64-bit O/S and IF the keys don't already exist.

According to the kb article, the keys need to be added to HKEY_CLASSES_ROOT; however, there is not a HKCR.txt file for us to modify in the ThinApp package. Considering that HKCR\Wow6432Node is just a merged view of HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes and HKEY_CURRENT_USER\Software\Wow6432Node\Classes, I opted to use HKLM so that the change would be made for all users on the PC.

I hope this helps someone else, as it's been quite a battle for me over the past few weeks. Your mileage may vary, depending on the application and the scanner used.

0 Kudos