Friday, May 30, 2008

Install QuickBooks Pro 2006 on Vista/Windows 7

Intuit does not support installing QuickBooks 2006 on Vista. They recommend that you upgrade (big surprise). I have, however, successfully installed it on my Vista Ultimate machine (twice).

When you try to install a program with known problems on Vista, you'll often see the following dialog.



This is far as the setup.exe in the root folder ever got. When you click Run Program the dialog disappears but setup.exe is still running in the Task Manager. I just killed it. Of course Checking for solutions online is about as useful as most Microsoft help that takes you online.

I have not done extensive testing to figure out exactly what you need to do and what you do not need to do but I'll post here the things I did. Probably some steps were unnecessary. Note: To be safe I ran everything I could as Administrator.

1. Uninstalled my latest version of Flash
2. Installed 'Macromedia Flash' from the QuickBooks CD in the folder \ThirdParty\Flash7
3. Installed the .Net framework 1.1 from the QuickBooks CD in the folder \ThirdParty\DotNET11
4. Tried to install Jet40 from the CD but it didn't work so it's probably not necessary.
5. Installed MDAC from the CD in the folder \ThirdParty\MDAC28 - it was quick.
6. Did NOT even try installing IE6 from the CD. Vista and IE have enough problems without confusing it by trying to install an old version.
7. Ran the Setup.exe program in the \QBooks folder. The Setup.exe in the root folder never let me get past the screenshot shown above.

During setup I encountered the following dialog. I clicked Ignore and it seemed to continue on just fine.


After it finished up I ran QuickBooks and did an update. It took a while but it seemed to update a bunch of stuff. I told it where to find my Company file and viola! I was up running. Then I reinstalled the latest version of Adobe Flash player again.

Ooops! Not quite. After I closed QuickBooks and tried to reopen, it told me that it had downloaded some updates but not installed them yet and asked if I wanted to install. I said OK and it tried but failed on the same file as shown above (ZRush_ShipRush3_QB.ocx). I tried clicking Ignore again but it kept looping between installing and unistalling the updates. I went through the loop a few times and manually registered the file with the command line:

C:\Program Files\Common Files\Intuit\QuickBooks>regsvr32 ZRush_ShipRush3_QB.ocx

But I don't know if that was really necessary. I finally just rebooted the machine, ran QuickBooks and let it try to install the updates again. It complained about another file but I clicked Ignore and let it go and it did complete. Now it seems to have the latest updates and it doesn't bug me anymore. Also, I turned off Automatic Updates because I don't like stuff running in the background and bugging me when I'm trying to do work.

That's it. I'm sure it would be almost trivial for Intuit to release an install program to help with Vista but it's also almost trivial to download payroll tax tables and they make you pay extra for that.

UPDATE: Charles Russell commented that this may not work with UAC enabled. Good point. I always have UAC disabled so that very well could be why it works for me and not some others.

Thursday, March 27, 2008

Connect to your home computer from anywhere

There are several services which will allow you to connect to your home PC through the Internet (GoToMyPC and PC Anywhere come to mind) but if you have the right operating system and some patience you can do it for free. Here is a quick checklist of the steps you'll need to perform. Each step is detailed below. The machine at home that you are connecting to is called the host. The machine that you are connecting from is called the client.

Checklist:
1. Have an OS that supports Remote Desktop at home (host machine), this means XP Pro or Vista Business/Ultimate. The machine you use to connect from (the client) can be any version of XP or Vista (or even Linux).
2. Enable Remote Desktop on the host.
3. (Optional) Change the port number on the host that Remote Desktop uses.
4. Open the Remote Desktop port on the firewall of the host computer.
5. On your home network, make sure your host computer has a static IP.
6. On your router, forward the port to the host computer's static IP.
7. (Optional) If your ISP gives you a dynamic IP (most do), then get an account at dyndns.org (free) or something similar so you can easily find your network from the Internet.
8. Make sure the host computer is turned on and doesn't go to sleep while you are away.
9. From outside your home, run Remote Desktop Connection on the client machine and give it your dyndns alias name followed by a colon and port number.


Details:
1. Host Operating System. For XP you must have XP Pro. For Vista you must have Vista Business or Vista Ultimate. If you have XP Home or Vista Home, you're out of luck because they don't have Microsoft's Remote Desktop service. You can still use a service like GoToMyPC and PC Anywhere .

2. Assuming you have an OS that has the Remote Desktop service, you'll need to enable it. By default it's disabled for security reasons.
XP Pro - Right-click on My Computer and select Properties. Click the Remote tab and check Allow users to connect.. in the Remote Desktop section. You can then select which users are allowed to connect.

Vista Business/Ultimate- Right-click on Computer and click the Remote Settings link. In the System Properties dialog click one of the two lower options in the Remote Desktop section. The Help me choose link should help you choose which one. You can then select which users can remote connect in.

WARNING: Windows will let you select any user, even if they don't have a password, including the Guest account. If you plan to allow connections from the Internet it would be a REALLY BAD IDEA to allow the Guest account access or any account that is not password protected. Otherwise anyone who guessed your IP address or alias could log onto your machine and do anything.

3. Change the port used for Remote Desktop. Although this is completely optional, there are two (maybe three) very good reasons to do it. First, for security; the default port for Remote Desktop is 3389 and anyone who might want to break into your computer knows this. So, by changing it, you are making it a little more difficult for the casual hacker to find you. Second, many workplaces may block outbound traffic on 3389 precisely because they don't want people using Remote Desktop to connect to a machine which may be unsecured. If you change to a port that is allowed from wherever you may be connecting from, you'll be able to get through. I use port 8080 because this port is sometimes used for web servers (and is a high number out of the well known port range) and is thus usually open to outbound traffic but it is unlikely that you are using it for anything else. You need to pick a port that you are not using for something else. Thus, if you are running a web server on the standard port 80, you don't want to set up Remote Desktop to use port 80. To change the port, you need to edit the registry. The registry key that needs to be changed is the same for XP and Vista:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber
The third potential reason to change the port number is that if you want to have multiple host machines on your network, they must use different ports to avoid collisions.

4. Open the port used by Remote Desktop on the firewall on the host machine . If you didn't change the port, then this will be 3389 (and the firewall was probably already adjusted when you enabled Remote Desktop), otherwise you need to open the port for whatever you set in the previous step. The firewall settings can be found in the Control Panel.

Steps 5-6 only apply if you have a home network with a router
5. Make sure your machine has a static IP address on your home network (for example: 192.168.1.42). You can either set this up through the Network Settings of the machine or (with some routers) tell the router to always assign the same IP address through DHCP to your machine.

6. On your router, forward the port to the IP address of the machine. Every router has a different way of doing this. You only need the TCP protocol, not UDP. For my example I would forward any incoming TCP traffic on port 8080 to the IP address 192.168.1.42. Here's what the screen looks like on my Linksys router. Note the text in the Application column is informative only, it doesn't do anything.


7. Most ISPs give you a dynamic IP address which means it could change anytime; although it usually doesn't change very often. There are many ways to find out the IP address that your ISP gave you if you are at home. You can check your router settings or you can visit one of many web sites that will tell you such as findmyip.com or kmwTech.com. When you are NOT at home, however, it is difficult to find your home IP address unless you already know it from the last time that you were at home. Of course it could have changed since you left the house.
There are many ways to overcome this but the easiest that I've found is to use a free service called DynDNS. This service will give you a domain name (like myhouse.dyndns.org) that will not change. Then, by installing some software on one of your computers at home, it keeps track of your IP address. Many routers (including my Linksys WRT54G) know how to update DynDNS so you don't even have to install any software on one of your computers, the router keeps DynDNS informed whenever it detects that your IP address has changed. This step is optional but very handy so you don't have to keep track of your own IP address.

8. Make sure your computer at home is on and doesn't go to sleep while you are out trying to remote connect in. Seems obvious but still worth mentioning.

9. Now the fun part, from work or your laptop or your friend's house or wherever run the Remote Desktop client. This is found in Start>Programs>Accessories>Remote Desktop Connection.


You'll be asked for your user name and password to log onto the machine. Check out the options to set screen resolution, sound etc. Of course if you didn't take my advice in step 7, substitute your IP address for the DynDNS alias.
Note that using your DynDNS alias or outside IP address from inside your own network might not work. To test within your network, use your local IP address and port. In this example it would be 192.168.1.42:8080.

Links:

Windows XP FAQ on Remote Desktop
Set Up Remote Desktop Web Connection with Windows XPGoogle Remote Desktop

Sunday, October 28, 2007

Using Gmail and IMAP

Google has finally implemented the IMAP protocol for Gmail. This is very good news for people like me who use an email client like Outlook most of the time from home or office but want access to their email elsewhere. IMAP lets you do this and keep all of your read, sent, and deleted messages in sync along with folders that you can create on either your email client or as labels in the Gmail web interface.

I (and Google) recommend using IMAP instead of POP for anyone who accesses their Gmail through an email client like Outlook. In this post I'll try to explain what IMAP does for you and how it works with Gmail in particular since Gmail does things a little bit different than other internet based email systems.

Get Started
Once Google has made IMAP available on your account, you'll need to enable it; unless you already have POP enabled, in which case IMAP will be automatically enabled. To enable IMAP, log into your Gmail account and click on Settings. In the main menu bar at the top you will see an item titled Forwarding and POP/IMAP (this bar used to be titled just Forwarding and POP). On that tab, you'll find the IMAP Access section where you can enable IMAP.



Next, you'll need to create an account on your email client. Google has excellent directions for this which you can get to by clicking the Configuration instructions link. Once you have your account set up (properly) and do a Send/Receive you'll get all of your Gmail into your email client.

How Gmail implements IMAP
Gmail is different from most other Internet based email systems in that it does not natively use the concept of folders. Most Internet based and client email systems use folders to let you organize your messages. Each message can exist in only one folder. You could, of course, make copies of your messages in other folders but this is a hassle and is generally not a good idea.

Instead, Gmail uses the idea of labels. This has nothing to do with IMAP, Gmail has always used labels. A label (or tag) is a piece of text that helps identify or categorize a message. A particular message may have many labels applied to it. For example, if you have a message from your uncle who is a dentist, you might apply the labels "Family" and "Doctors". Then whenever you looked at all messages from "Family" or from "Doctors", you would see the message from your uncle.

IMAP uses the traditional idea of folders; meaning that a particular message can belong to only one folder. So, how does Gmail IMAP resolve the folder vs. label dillema? Simple, Gmail makes copies if a message has more than one label (actually, it makes copies even if only one or no labels are applied). So, for the example of the message from your dentist uncle, your email client will have a folder called "Doctors" and another one called "Family" and your email will appear in both folders in your client email program.

The figure below shows that all of the Gmail labels are mapped to folders in an Outlook IMAP account.



In Gmail, all of the emails that you have not deleted will show up when you click on All Mail. In Gmail, Inbox is just a label that is applied to every message when it comes in. To remove the Inbox label, select the message and click the Archive button.

What happens if....
..you delete a message from a folder in your IMAP client program?
A: The corresponding label is removed from the message in Gmail. It will still show up in your inbox (if it was there) and in All Mail and in any other folders that correspond to labels that have not been removed.

...you remove a label from a message in Gmail?
A: It disappears from the corresponding folder in your IMAP client program but it's still in any other folders that correspond to labels that have not been removed.

... you create/remove a folder in your IMAP client program?
A: A new label is created/removed in Gmail

... you create/remove a new label in Gmail?
A: A new folder is created/removed in your IMAP client program.

Starting to get it?

What happens if you send an email through your IMAP client program? Is is saved in Sent Mail?
A: Yes, it's saved in the Sent Mail folder in your IMAP client and it gets the Sent Mail label in Gmail. If the message was a response to an incoming message and you didn't change the subject line (except for the RE: that was prepended), then you'll see the message in a Conversation in Gmail. A Conversation is just a way of grouping messages (both sent and received) that have similar subject lines so that you can see a whole conversation at once. Outlook and some other email clients let you group messages by Conversation as well but it's enabled by default in Gmail so you're more likely to see it there.

Comments welcome.