media, windows comments edit

When I was setting up multi-user iTunes on my new Windows Vista box, I also came across the need to set up Picasa for multi-user support. Like iTunes, Picasa is really a single-user application so you have to do some special work to get it to share a single library across different user accounts.

Fortunately, you can use many of the same principles as in multi-user iTunes to get Picasa up and running without much issue. (Enough so that I can do some pretty easy copy/paste modification to the iTunes instructions and get Picasa instructions.)

IMPORTANT NOTES:

  • This is all at your own risk.  If it doesn’t work for you, I’m sorry, but I can’t offer individual support.
  • You may not be able to follow this verbatim. If these steps don’t work precisely, I recommend looking at the intent of the steps - putting the Picasa library in a central location and creating links to it from individual user profiles - and adjusting things according to your setup.
  • As new versions of Picasa, Windows, etc. come out, I may not always update or catch all the little “gotchas.” I originally wrote these for Picasa 2.7… things change, versions change, OSes change, and I can’t keep these up to date for every possible combination of software.
  • You must have Administrator privileges to set this up. You don’t need Admin rights once you’ve got it set up, but some of the stuff you do here needs to be run as Administrator, so make sure you can do that.
  • You need to be comfortable at a command prompt. If you’re not, this may be very frustrating for you.

Now… here’s how to get it running:

  1. Get the required tools. You’ll need a tool that allows you to make symbolic directory links.
    • On Windows Vista, this is built in - the mklink command.
    • On Windows XP, you need to go to SysInternals and download a copy of “junction” if you don’t already have it and put it somewhere in your path (like the C:\WINDOWS\System32 folder); you’re going to need to use it from the command prompt later.
  2. Make sure everyone runs Picasa once. For each user you want to set up, make sure they’ve run Picasa at least once so they’ve accepted the EULA and Picasa has created their initial/empty library file. You’ll also be asked to set up “watched directories” when Picasa runs the first time. I recommend watching as few directories as possible and adding them in later once you’ve finished getting everyone on board.
  3. Choose the Picasa library you want to share. Decide which user’s Picasa library you want to be the main one that everyone else will share. You’ll be manipulating this library. I will call it “the main Picasa library” from now on so you know what I’m talking about.
  4. [Optional] Consolidate/move the main Picasa library pictures into a shared location. Picasa allows you to backup and restore pictures using its built-in tools. You can back up from one place and restore to a different place, effectively moving your library. (I will not walk you through this. It’s sort of a pain, but if you search the Picasa forums you’ll find info.) Basically: run the backup, move your original photos out somewhere else, restore the backup to a different/new location, verify you can still see things in Picasa, and delete the original photos.  Doing this will save you a lot of headache when you find that one user can’t access all the pictures that another user can due to security restrictions. Move the pictures into a shared location (like create a folder called  C:\Users\Public\Pictures\My Pictures in Vista or the C:\Documents and Settings\All Users\Documents\My Pictures\My Pictures in XP and move it there). Note that you may need to try the “restore” operation a few times before you get it the way you like it. Don’t delete your originals until you’re sure the backup restored all of the stuff you want. I am not responsible if you lose data trying this. Do it at your own risk.
  5. Find the main Picasa library. The Picasa library for each user is stored across two folders inside each user’s application data folder. Both of these are part of the library, so when you’re working with the library, copy them at the same time and keep them together.
    • In Windows XP, these folders are:
      • C:\Documents and Settings\username\Local Settings\Application Data\Google\Picasa2
      • C:\Documents and Settings\username\Local Settings\Application Data\Google\Picasa2Albums
    • In Windows Vista, these folders are:
      • C:\Users\username\AppData\Local\Google\Picasa2
      • C:\Users\username\AppData\Local\Google\Picasa2Albums
  6. Back up the main Picasa library. Copy the main Picasa library folders somewhere safe for backup purposes. Just in case something goes wrong.
  7. Create a shared Picasa library folder. Create a new Picasa folder that all users have access to. I recommend putting it in the “Public” or “All Users” areas so you don’t have to worry about security issues. It should be something like this:
    • In Windows XP, this will be C:\Documents and Settings\All Users\Documents\My Pictures\Picasa Library.
    • In Windows Vista, this will be C:\Users\Public\Pictures\Picasa Library.
  8. Copy the main Picasa library folders into the shared Picasa library folder. As simple as drag and drop - copy the two folders that make up the Picasa library into the new shared library folder you just created.
  9. Create symbolic links to the shared Picasa library folders. You’re logged in as Administrator (or otherwise have Administrator rights), right? Here’s where you really need them.
    • Open a command prompt. In the Start -> Run box, type cmd and hit Enter. A command prompt should pop up.
    • For each user who needs to share the Picasa library…
      • Change to the user’s local settings folder.
        • In Windows XP: cd "\Documents and Settings\username\Local Settings\Application Data\Google"
        • In Windows Vista: cd "\Users\username\AppData\Local\Google"
      • Delete the old Picasa library folders and all of their contents. (This is why you backed the main library up earlier.) rmdir /s Picasa2 rmdir /s Picasa2Albums
      • Make a symbolic link to the new shared Picasa folders. This will replace the old Picasa folders and will “fake out” Picasa so it thinks it’s talking to a local user’s library.
        • In Windows XP: junction Picasa2 "C:\Documents and Settings\All Users\Documents\My Pictures\Picasa Library\Picasa2" junction Picasa2Albums "C:\Documents and Settings\All Users\Documents\My Pictures\Picasa Library\Picasa2Albums"
        • In Windows Vista: mklink /d Picasa2 "C:\Users\Public\Pictures\Picasa Library\Picasa2" mklink /d Picasa2Albums "C:\Users\Public\Pictures\Picasa Library\Picasa2Albums"
  10. Verify the settings by logging each user in. Everyone you just set up should now be working off of the same Picasa library. Have each user who’s sharing log in and verify they can see the shared library. Do not use “Switch Users” - you must fully log off each user and log the next one on. They will all have to set up their own preferences (like their email settings, etc.) but they will all have access to the same picture library and the same albums.
  11. [Optional] Update watched folder settings for each user. You may need to set up each user account to watch the same folders, and make sure each user isn’t watching their own personal “Pictures” folder. You only want Picasa to watch folders that every user sharing the library has access to, otherwise you could run into access issues.
  12. That’s it! You’re done!

I’ve had this running for a couple of weeks now and haven’t had any issues. The toughest part really is doing the backup/restore to move your pictures to a new location that everyone can access. Just be patient with it and be willing to spend the time it takes to try it a few times. Oh, and be sure to back things up and verify your changes take hold before you delete things. You’ll get it. It’s not that bad.

All instructions here are provided for your UNSUPPORTED use and AT YOUR OWN RISK.

media, windows, music comments edit

A fairly popular article I posted a couple years back is on setting up iTunes for multiple users on Windows. I just updated that article so it shows how to do it in XP and in Vista, and I fleshed out the steps so they’re easier to understand and follow. (I just had to do this on a new laptop we bought, so I figured I’d offer it up to folks and see if I could spread the joy.)

If you’re into the multi-user iTunes thing, check it out.

gaming, xbox comments edit

Amid the other problems I’m having with my Xbox 360 and Xbox Live, this morning I seemed unable to recover my gamertag. When I did the network diagnostic, I found that the NAT settings came up as “Moderate” (on the Xbox Live scale of “Strict,” “Moderate,” and “Open,” you really need that to say “Open”).

To make it read “Open,” you need to forward the following ports through your router to your Xbox (which means you’ll also need a static IP address on your Xbox):

  • UDP 88
  • UDP 3074
  • TCP 3074

Lucky for me, PortForward.com has some great free how-to articles on setting up just that. Here’s the guide to setting up a static IP address on your Xbox 360 and the guide for Xbox Live port forwarding on a Linksys WRT54G.

Interestingly enough, after futzing around with this and getting it to a situation where I couoldn’t even connect to Xbox Live at all, I put all my settings back the way they were (remember they were “Moderate?”) and suddenly it was seen as “Open.” I guess you never can tell.

personal comments edit

Another year come and gone, so it’s time again to throw up a bit of a retrospective of highlights for the past 365. (For reference, here’s last year’s retrospective.)

In January, I put out version 2.1 of my DHTML tooltips for Amazon links (which are sort of obsolete now since Amazon has all that set up from their site in a much richer format). I did a review of various clipboard management software and ended up with ClipX as the winner of that showdown. I also pumped out a little command-line GUID generator and a custom NAnt task assembly with some helpful stuff in it.

In February, we got a new little terrorist cat named Jack. I published some tips on disaster recovery and trouble-free continuous integration. We all got a little sick of hearing about FizzBuzz toward the end of the month.

March got me trying to get people to switch their blogs to use inline styling when including code snippets because they don’t format right in RSS otherwise. I’m still fighting that one. I got Media Center working with my Xbox 360 in a test environment (but I’m still trying to determine the right way to go to serve up DVDs and meet all of my requirements).

In April I had electronics and DRM issues. The lifespan of my 3G iPod sort of reached a logical limit as I hit the 1418 error and found that the iPod must be plugged into the wall while charging synchronizing as of iTunes 7. I got a Red Ring of Death on my second Xbox 360 (which hit me with some bad DRM juju) and bought a new DVD player because of bad Sony DRM. I also got into the design for testability vs. design for usability debate with respect to static helper utilities. Oh, and I attended MIX07, which I blogged a lot about [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

May saw CheckFree acquiring Corillian. It also saw TypeMock publishing a nice case study of its usage inside Corillian. I tried to figure out how you’d detect through reflection if two object types can be added together, but never did get an answer. Just at the end of the month, I posted the EmbeddedPageHandlerFactory

  • a way to serve up ASP.NET 1.1 from embedded resources.

In June The Sopranos ended with a whimper and I migrated my blog to Subtext. I preordered GTA4 (which still hasn’t shipped), posted a CodeSmith template for generating generic KeyedCollection derivatives and solved the Guitar Hero controller loose whammy bar problem with some o-rings.

In July I did a fireworks show in Walla Walla, WA, gave away some code to convert an Outlook message into a task, and made a bookmarklet to automatically copy an Amazon Associates URL to your clipboard while browsing Amazon. I published the EmbeddedResourcePathProvider

  • a way to serve up ASP.NET 2.0 from embedded resources. Oh, and I turned 31.

I started August out by showing you how to mock a page request lifecycle with TypeMock. I started getting laser hair removal on my face (which I’ve continued to do: 1, 2, 3, 4). I also posted some tips for non-programmers who want to learn how to program.

In September my Xbox got tanked by a dashboard update so I got to send it in for repair, making this the third time I’ve had to get things fixed. I found an odd issue where ISAPI filters were causing problems with .NET and showed you how to optimize your TortoiseSVN cache for better disk I/O.

In October I celebrated my first wedding anniversary. I ran into a problem where I found that .NET assemblies store enum values, not references to the original enum, which caused some havoc. I got hit by some changes in the Xbox Live DRM model, which, two months later, I’m still fighting. I also posted a program to help you copy iTunes track metadata from one track to another.

In November I went to the Microsoft Patterns and Practices Summit (Days 1, 2, 3, 4, 5) and met Lutz Roeder while up there. I posted some tips on writing good XML doc comments in your code. I participated in the One Laptop Per Child program (which I later unboxed for you). I installed VS 2008 and the install was the worst. I rounded up some “Command Prompt Here” utilities for you and learned, via Rock Band, that I might just suck as a drummer. Finally, I showed you how to use ParseControl to combine ASP.NET skins and localization effectively.

December saw CheckFree getting acquired by Fiserv. Xbox DRM continues to eat my lunch so I posted some maintenance secrets that might help you avoid a call to Xbox Support. I posted UrlAbsolutifierModule

That pretty much brings us to current. It’s been a heck of a year - I got acquired twice, went to some great conferences (and met some cool people), and posted some [hopefully helpful] stuff for folks. Here’s to a great upcoming 2008!