VMware Communities
manfredell
Enthusiast
Enthusiast

Fusion2, windows apps appearing in Mac right click "open with...."

I have Fusion 2 installed. 2 betas and now the release.

In my XP VM I have the setting of Shared Applications ALL turned off. But each time I run the VM and then "return" to my OSX I get a bunch of Windows apps in the right click open with menu of my documents.

I have to use a utility to clear the Launch Services database to clear up the mess each time.

How do I stop this?

Thx in advance

0 Kudos
15 Replies
WoodyZ
Immortal
Immortal

0 Kudos
Pbryanw
Enthusiast
Enthusiast

I've had a look at that but I've got a Unity program in the dock so I can't switch that option off.

Is there a way to clear the mac "open with" menu of all the windows apps while still being able to have, and use, a Unity app in my dock?

0 Kudos
mudaltsov
Expert
Expert

You can narrow down the Open With list to only applications you use in Unity if you uncheck the "Allow you Mac to open applications in the virtual machine". However applications started in Unity will still be published with the filetype and URL handling information. There's no way to disable that individually yet, but we will think about doing it for the next minor release of Fusion. I can definitely see useful cases for when you just want the apps in Unity, but don't need them to open files or URLs.

One possible workaround is if you manually remove the CFBundleDocumentTypes and CFBundleURLTypes from the proxy applications' Info.plist files, and then make them read-only, but it would have to be done for every application you want to run in Unity, so it's not very convenient.

0 Kudos
manfredell
Enthusiast
Enthusiast

I checked that folder. I had 1200 files in there!! Each windows ap I've used had at least 50 versions of that file in there!!!

No good. Deleted all.

As I also use unity and want the icons to show in the dock BUT don't want to open files from the Mac side in the VM I really beg you to implement the auto delete real quick!

Thax

0 Kudos
Pbryanw
Enthusiast
Enthusiast

As I also use unity and want the icons to show in the dock BUT don't want to open files from the Mac side in the VM I really beg you to implement the auto delete real quick!

Seconded please. If you could implement this change in the next minor release that would be great.

0 Kudos
admin
Immortal
Immortal

I think the following will work. To use, cd to the Applications folder of the .vmwarevm bundle, then

./stripFileURLHandling.pl *.app

Edited to correct script.

#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;

if ($#ARGV == -1) {
   print "Removes file/URL associations from Dockers. Usage:\n";
   print "$0 docker.app [docker2.app [docker3.app ...]]\n\n";
   exit;
}

foreach my $appnum (0 .. $#ARGV) {
   my $surpress = 0;

   move("$ARGV[$appnum]/Contents/Info.plist", "$ARGV[$appnum]/Contents/Info.plist.bak");
   open INFILE, "$ARGV[$appnum]/Contents/Info.plist.bak" or die $!;
   open OUTFILE, ">", "$ARGV[$appnum]/Contents/Info.plist" or die $!;

   while (<INFILE>) {
      if (/^\t<key>CFBundleDocumentTypes<\/key>/) { $surpress = 1; }
      if (/^\t<key>CFBundleURLTypes<\/key>/) { $surpress = 1; }
      if ($surpress == 0) { print OUTFILE; }
      if (/^\t<\/array>/) { $surpress = 0; }
   }

   # Fusion will overwrite the Docker, making it show up again. Make the
   # Docker non-writable to prevent this.
   # Is there a way to only remove the write bit?
   chmod 0444, "$ARGV[$appnum]/Contents/Info.plist";
   chmod 0555, "$ARGV[$appnum]/Contents";
   chmod 0555, "$ARGV[$appnum]";
}

0 Kudos
manfredell
Enthusiast
Enthusiast

Hi Etung,

this is too much for me. You'll have to elaborate please.

0 Kudos
admin
Immortal
Immortal

Applications contain a list of file and URL types that they handle. OS X inspects these and comes up with the LaunchServices database (for use with "Open With..." and other purposes). Michael was suggesting that a workaround is to edit the helper applications to remove the list of file/URL types they handle so OS X won't include them in "Open With...". My script automates this (I think, I haven't tried it).

  1. Download and unzip the attachment. For the purpose of step 3, I'll assume you've done this to your Desktop.

  2. In Terminal.app, navigate to the Applications folder of the .vmwarevm bundle. For example, cd "~/Documents/Virtual Machines/Windows XP Professional.vmwarevm/Applications/"

  3. Run the script on all the .app files in that folder, e.g. ~/Desktop/stripFileURLHandling.pl *.app

This should fix up all of the existing helper applications (new ones won't be affected). You will probably need to poke OS X to get it to rebuild the database. If something goes wrong, you can delete the helper apps (as you did before) and Fusion will recreate them.

0 Kudos
manfredell
Enthusiast
Enthusiast

Thx Etung,

got that. For the time being I've deleted the option of Fusion putting icons in the dock at any time as I don't use Unity most of the time....

I'll wait for an automatic solution.

Perhaps others can try your fix.

Thx!!

0 Kudos
Pbryanw
Enthusiast
Enthusiast

Okay I followed the three steps. As I was already in my home directory I changed step 2. to cd "Documents/Virtual Machines/Windows XP Professional.vmwarevm/Applications/"

When I ran the script, the icon for my Windows apps in the vmwarevm Applications directory changed, and when I tried my Mac's "open with" menu the Windows apps had been removed.

However, once I resumed my Windows VM from a suspended state (in single window mode) the Windows Apps in the vmwarevm Applications directory were re-created and re-appeared in my "open with" menu.

So, this is not a solution for me.

Any help appreciated, Paul

0 Kudos
mudaltsov
Expert
Expert

There was a bug in the original script that didn't properly remove an </array> entry from the Info.plist file, making it corrupted. Eric updated the script, and it should work correctly now. It also makes the applications read-only, which prevents Fusion from adding the file/URL handling information back into them (unless it publishes a new app). You can even keep the "Allow your Mac to open applications in the virtual machine" option turned on, so you can launch the applications from the Dock.

After running the script, relaunching Finder seems to be enough to eliminate the apps from the Open With list. You can Relaunch Finder if you log out and back in, or hold down Option and right-click on the Finder in the Dock and choose Relaunch.

0 Kudos
mac_pro_user
Enthusiast
Enthusiast

This annoyance was one of the main reasons I switched from using the "other" product from swsoft...

This should be fixed immediately with an option to turn it off completely. It might be "neat" for some people, but I prefer to keep my OS programs and context menus nice and tidy!

0 Kudos
Pbryanw
Enthusiast
Enthusiast

Yes, works for me now. No more cluttered up "open with" menu. I had to delete my vmwarevm Applications directory and rebuild it before I ran the script though. Probably because I used the old, non-working script last night and that messed things up a bit. But yes, if this script, or something like it, could be built into the next minor release of Fusion as a user option, that would be even better.

0 Kudos
Pbryanw
Enthusiast
Enthusiast

Hi, sorry to bring up an old thread, but is there likely to be a fix for this problem in a future version of Fusion?

It's only the specific case where you still want to use Unity, so have shared applications turned on, but don't want a cluttered OS X context menu.

I can still use the stripfileurlhandling.pl script successfully, but for some reason the problem comes back from time to time, so I have to re-apply the script every so often. It would be nice not to have to do this.

Thanks, Pbryanw.

0 Kudos
Pbryanw
Enthusiast
Enthusiast

This problem (that the OP and I had) seems to have been fixed in Fusion 3.

Disabling "Open your Mac files and web links using Windows applications" in the Default Applications VM setting worked for me.

I also had to delete the contents of my VM's applications folder, as it seems Windows apps only appear in there on demand now (when they've been launched in Unity mode).

Anyway, Iooks like I can finally retire/delete the stripfilehandling.pl script I've been using since Fusion 2. Thanks VMware (and sorry about the old thread resurrection).

0 Kudos