Install nodejs 4 on 64-bit Windows machine

Yesterday, I met a problem when installing Nodejs 4 on my 64-bit Windows 7 machine at the company. The installer exited with an error message telling me that:

There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor

I tried with both 32-bit and 64-bit versions of all Nodejs version from 4.0.0 to 4.2.1 but with no luck. I tried the `msiexec` command line to get the log file and posted to Nodejs repository to find any ideas from the community. The content of the log file is:

=== Logging started: 10/19/2015  13:44:59 ===
Action start 13:44:59: INSTALL.
Action start 13:44:59: SetInstallScope.
CustomAction SetInstallScope returned actual error code 1157 (note this may not be 100% accurate if translation happened inside sandbox)
Info 2898.For WixUI_Font_Normal textstyle, the system created a 'Tahoma' font, in 0 character set, of 13 pixels height.
Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SetInstallScope, entry: SetInstallScope, library: C:\Users\CODEFO~1\AppData\Local\Temp\MSI7073.tmp 
MSI (c) (78:E4) [13:45:04:065]: Product: Node.js -- Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SetInstallScope, entry: SetInstallScope, library: C:\Users\CODEFO~1\AppData\Local\Temp\MSI7073.tmp 

Action ended 13:45:04: SetInstallScope. Return value 3.
Action start 13:45:04: FatalError.
Info 2898.For WixUI_Font_Bigger textstyle, the system created a 'Tahoma' font, in 0 character set, of 19 pixels height.
Action ended 13:45:05: FatalError. Return value 2.
Action ended 13:45:05: INSTALL. Return value 3.
=== Logging stopped: 10/19/2015  13:45:05 ===
MSI (c) (78:E4) [13:45:05:193]: Windows Installer installed the product. Product Name: Node.js. Product Version: 4.2.1. Product Language: 1033. Manufacturer: Node.js Foundation. Installation success or error status: 1603.

Finnaly benjamingr gave me a suggestion that solved the problem. I cleared my Temp folder ignoring any busy files and reran the x64 installer (the node-v4.2.1-x64.msi file). The new version of Nodejs and NPM installed successfully:

$> node -v
$> npm -v

My original issue on GitHub here.

Sharing files and folders with Linux guest OS in VMWare player

One day, when preparing a virtual machine to study Hadoop, I have to find the way to share a files and folder between my Windows 8 machine with the Linux guest OS, more specific, I use LUbuntu as my guest OS. After a quick Googling and read the documentation, I was successful. Today, I want to share this experience with you.

Install the VMWare Tool

First of all, you have to install the VMWare Tool for the guest OS to enable the shared folder in this OS. Click in Player menu > Manage, > Install VMWare Tools…. You may have do download the tool before the installation start.

Start install the vmware tools
Start install the vmware tools




After the compressed installation file has been mounted to the guest OS, copy it to another writable location e.g. the Desktop folder and decompress it. Now, open the Terminal and change the working directory to the new created folder, usually named vmware-tools-distrib.

Change the working directory to the new installation folder
Change the working directory to the new installation folder




Execute the with super user privilege and accept all default value. It will automatically execute the at the end of the installation. If your Linux does not have gcc and make, you have to install these package and re-run the again by simply enter sudo

Config the Shared Folder in VMWare player.

Now, we have to VMWare tools in the guest Linux OS. We should open the virtual machine settings by click Player menu > Manage > Virtual Machine Settings. In the new dialog, choose the Options tab and enable the Shared Folder option.

Enable Share Folder in the virtual machine
Enable Share Folder in the virtual machine




Click the Add… button at the bottom, follow the wizard to choose a folder in the host OS and the name of shared folder in the guest OS. In the Linux guest OS, our shared folder will be mounted in the /mnt/hgfs/. You can make a soft link (shortcut) to the Desktop to used this folder more easily when working in the Linux OS by entering this command in the terminal:

$> ln -s /mnt/hgfs/shared-name ~/Desktop/shared-name

Now you can access the shared files and folder from you Desktop folder. The modifications in this shared folder is two-way affected by default. If you do not want the guest users write or change this shared folder content, in the previous wizard click the read-only option, you can change this option any time in the virtual machine settings screen, too.

Last, my demonstration of sharing folder with Linux guest OS

Now, you have read all my words. I also upload a video to my Youtube chanel, you can see it to get more specific detail

How I fix the TF30167 Error when creating new team project in VS2010

Hello everyone! Today, I am going to tell you how I can fix the TF30167 error when creating a new team project in Visual studio 2010. There are many things can be the reason for this ugly error. The way I solved the problem may or may not successfully applied to your case. However, I think you should give it a try.

The situation

I need to create a new team project under this condition:

  • Visual Studio 2010 SP1 on Windows 8.
  • Team Foundation Server 2010 with an account belonging to the Project Collection Administrator group.
  • Using MSF for Agile Software Development v5.0 template

In fact, I cannot create the project and receive this error:


TF30167: The New Team Project Wizard could not finish creating the project Testing project.


The following unexpected error was encountered while creating the team project: TF30229: Failure retrieving user information.

User Action

Restart Visual Studio and run the New Team Project Wizard again. If the problem persists, contact your Team Foundation Server administrator

What I did?

The solution is very simple. First, read this article from MSDN carefully and be sure that you have satisfied all requirements. If the TF30167 error cannot be eliminated, try to disable your antivirus for a while when creating the team project. I have disable the Avast and everything go like a charm!

See the video below for more details

My first look at Windows 8 User Experience

Last week, I did a foolish thing, installing a OS which is is beta state over my current OS. Of course, I backed up my data before doing that, but I do not recommend you to do the same thing with your work. However, after a few days of using the new Microsoft OS, I have had some idea about its UX and now I share it with you.

Have to do more steps to shutdown or restart

Unfortunately, my first impression about Windows 8 is a negative point. By removing the Start button, Microsoft do an intelligible action that make users do a longer process to shutdown or restart the computer. As you can see below, it takes us two steps to shutdown and three steps to restart in windows 7 whereas we have to do four confusing steps to do the same thing in windows 8.

the interaction to shutdown the computer in windows 7 (above) and Windows 8 (below)
the interaction to shutdown the computer in windows 7 (above) and Windows 8 (below)

Why do I say “confusing”? Well, in Windows 8, we have to activate the Charm bar (I’ll mention it later) to find the power button. Nevertheless, to do this, Microsoft tells us to hover our mouse to the top-right or bottom-right corner of the desktop. Unluckily, it is the bad news that if we move the mouse to the top-right corner, it’ll take us a time to move back to the bottom, where the power button is located. Moving to the bottom-right one? We will be easy hide our all windows, even the Charm bar itself, because of hovering the Show desktop button by accident, which is located exactly in the bottom-right corner of your desktop by default.

Change the way users customize their apps with Charm bar

Now, I talk about the Charm bar. First, take a look at some screenshot of my Charm bar

Windows 8 Charm bar in the desktop
Windows 8 Charm bar in the desktop
Windows 8 Charm bar in the start screen
Windows 8 Charm bar in the start screen
Windows 8 Charm bar in a Metro style applicaton - Weather
Windows 8 Charm bar in a Metro style applicaton – Weather

Instead of using the menu command Tools > Options … or Edit > Preferences …, windows 8 users now have to use Chamr bar to customize their applications. All settings options now can be found when navigating to Chamr bar. To show up this tool, we have two ways:

  • Use mouse gestures: hover the mouse to the top-right or the bottom-right corner of the desktop
  • Press Windows key + C

If we are using an Metro style application, the Settings section of the Charm bar contains all options for this. I we activate the Charm bar on our desktop, this section will lead to our computer settings (a system utility like our previous Control panel). To be honest, I really like this new feature, except what it does with the power button, when it allow user have more space for their apps.

Windows Store: a great innovation

Before windows 8, windows users does not have any hub to find new reliable applications for their computer. While Mac ones have Apple app store, Android ones have Android market (now, Google Play store), Ubuntu ones have Ubuntu application center, … windows users have to use some third-party applications/websites to find the programs they need. Now, with the Windows Store and the pre-installed Store application in windows 8, we can find new and reliable applications with screenshots, other users’ reviews, system requirements, … in one place and install them easily and silently.

The windows 8 pre-installed Store application
The windows 8 pre-installed Store application

New way to interaction with our workspace and Metro style applications

In their new OS, Microsoft introduces some new ways to interact with our workspace. First of all, we can split our desktop screen into two areas, which allow us to look at two application as the same time, with the Snap function. If you have a screen larger than 1366px in width, you can use this to keep your instance messaging program displayed when continue reading an article or play a game and don’t care about changing the size of our windows manually. This means that developers have to pay more attention about Responsive design and the situations that their application can be resized.

Snap function in windows 8 - play game when keep in touch with our friends
Snap function in windows 8 – play game when keep in touch with our friends

Another change is that we have no close, minimize or maximize button on our Metro style application. To close a program, we can use a gesture or the combination key Alt + F4 (believe me, unless you use windows 8 on a tablet, the gesture is a challenge, so remember the key shortcut). To switch to another program, use another gesture, or use Alt + Tab to circle between them, or use the new left panel (only for Metro style applications). See the video below for more detail about these new features.

Two types of account, great but need more improvements

Last but not least, one feature of windows 8 makes me so confused is using two types of windows account: Microsoft account and local account. We can bind our windows local account on our computer to a Microsoft live account. After that, we can synchronize our files, music, video clips, pictures, … between our computers which share the same Microsoft account, of course, we have to connect to the Internet to do this. With this feature, users who have a persistent Internet connection can save their time and money when they can use one multimedia library for several computers and change the way they store their stuff.

However, there are some points need improving with this idea. Microsoft allows us to switch between the Microsoft account and the local one without losing any files and settings, except the local account password! Furthermore, when using some Metro applications like Music or Video, windows suggests us to switch to the Microsoft account to sync our files and do not allow user to disable this silly notification. Why “silly”? Microsoft does not support the synchronizing function in all countries, so why they make users of these countries face too this meaningless message?


All above are just what I feel after one week using Windows 8. Up till now, it is still in beta state, which means that it will be changed a lot in the future. I think I will try this new OS until it official release to study about the new trend of interaction. By the way, if you have a middle-class computer and want to explore new things, give this OS a chance.

Use Git DVCS to manage your project versioning on local host

I wrote a post before: Introduce to the version control system. I have used SVN and Git with some free remote VCS host like Google Code or Github to manage the versioning of my projects. For a time of using these two VCS, I decided to choose Git as my main tool. Today, I will tell you the story how I use it in my work.

Why Git, not SVN?

Both Git and SVN have their own pros and conds. In my subjective point of view, Git have plus points in these things:

  • Git use only one folder called .git in the root of you working copy when SVN create a .svn sub folders in each sub folder of your working copy. The SVN annoys me a lot when creating so many hidden stuffs like that.
  • When using Git, you can push your code to any remote repositories. If you use SVN, you have to switch the repo before commiting to it.
  • Almost operations are did locally when using Git, which saves a lot of time when merging, committing, or reverting.
  • Git have a more efficient algorithm in storing data.

You, and some others, can say that SVN have it own exelent things. That is not wrong, and this post does not tent to specify which is better as well. I wrote this post for those who loves DVCS and want to use Git with there work.Before reading more, be sure that you can use Git at a basic level and have it in you machine. Otherwise, take a look at one of Git tutorials like Git Pro Book or community-edited Git book.

Create a normal repository

Create a normal repository is so simple with Git.

$> cd ~/your_pj
$> git init

After doing this, you have a working copy named your_pj and ready for version control.

Create a local “remote” repo to push to

One of the advantages of using a VCS is you can recover you work when needed. By default, the .git folder is in you own working folder. So what can you do if you delete it by accident? – Nothing. That’s why you need a remote repo.

There are many free service to host you Git repository on the internet, but most of them force you open your source code when using. Creating “remote” repo in some trusted location like your flash disk or a portable hard drive can help you use Git and keep your code from the public.

In my example, I use a flash dish labeled TOP-SECRET to store my backup repo. I use Ubuntu, so my device folder will be in /media/TOP-SECRET. After change to this directory, I used git init with a addition option to create the back up repo.

$>git init --bare your_pj_remote

Add the “remote” repo to your active one

The last thing to do is register the “remote” repository to your working copy and push the data when you want.

$>cd ~/your_pj
$>git remote add remote-repo /media/TOP-SECRET/your_pj_remote

If you want to back up your data, mount the deive and use the normal push command

$>cd ~/your_pj
$>git push remote-repo branch_name


Now, you have had your own VCS on your local. As I tell before, using a VCS will help you a lot in coding and managing your project. I hope you like Git and use it as a good utility.

My Ubuntu 11.10

Make my Ubuntu be the 11.10!

First of all, you have to upgrade you Ubuntu to the version 11.10. To do this, you can see for the upgrade process. Of course, if you are new to Ubuntu, just install a new fresh copy from your CD.

Things I did after the upgrade

Get the GNOME 3 shell extension

I love the GNOME desktop since the very early version of Ubuntu. When you may have a big trouble with the GNOME 3 on Ubuntu 11.04, this version of Ubuntu comes with the GNOME and you can easily use the GNOME 3 shell with a simple command

sudo apt-get install gnome-shell

After re logging, you can choose GNOME 3 or GNOME 3 classic on the welcome screen beside the “traditional” Ubuntu and Ubuntu 2D shell. This is my screen shot with Ubuntu 11.10 and GNOME 3 shell.

Enable my touchpad

Again and again, my touchpad becomes unusable after upgrade Ubuntu. For those who meet this bug like me, use this command to re-enable your touchpad.

gconftool-2 --set --type boolean /desktop/gnome/peripherals/touchpad/touchpad_enabled true

I found the solution here and do not assurance that it works for you. Believe to your luck!

For a longer battery life

After reading this post, I believe that install Jupiter will help me have a better performance-power balance. To get the Jupiter, open the Terminal and enter these commands

sudo add-apt-repository ppa:webupd8team/jupiter
sudo apt-get update
sudo apt-get install jupiter

You can find the icon of Jupiter on the Bottom tray of your desktop.

Decrease the window font size

The significant bad thing of GNOME 3 on Ubuntu 11.10 for me is that the system font size is to big. I did as bellow to customize my Ubuntu font settings. First, install the GNOME tweak tool from the Terminal

sudo apt-get install gnome-tweak-tool

Open it via terminal or Ubuntu “run” dialog by entering this command


Go to this page to customize the font settings

Now, take a look at my new Ubuntu

After doing all above, let see what is interesting my Ubuntu.

The return of “show the desktop” and “run dialog” shortcut as well as the System tray (bottom tray)

In this version, my two favorite shortcut becomes available again. To minimize all windows and focus on the desktop, you can press “windows key”+”D”. You can also press “Alt”+”F2” to open Ubuntu “run dialog” and quickly run programs with just a line of command. The System tray or Bottom tray is also the “new” feature of Ubuntu 11.10 (as it disappeared in the Ubuntu 11.04). It contains the icon of the programs which run “as a service” on your machine. You can find Skype, Banshee, Jupiter, Ibus … icon here.

New design of the “dash home”

The GNOME 3 brings a new look for the “dash home” to the Ubuntu 11.10. To show this view, you can press “windows key”, click the Activities button or move your mouse to the top left screen corner. The “dash home” can be considered as the “windows 7 start menu for Ubuntu”, you can browse your applications, documents and even search them. As you can see on the first figure, the “dash home” view contains several elements: a left panel with your favorite applications; the toggle panel in the right contains your current workspaces and the main area in the middle for the windows in the selected workspace or for the application browser.

The improvement in UI and UX

In my opinion, Ubuntu 11.10 has a great improvement in its UI as well as UX. The dash home, as told above, is an example. The welcome screen and the lock screen are also re-designed and make me feel better. The notifications are moved from the right to the bottom of the screen, now, it appearance no longer annoys me! Further more, many dialogs and windows have been rearranged to make the users easily to use Ubuntu.

The last thing …

I have just tried Ubuntu 11.10 for one day, there are many nice features that I cannot or do not mention in this post. But in a general view, Ubuntu 11.10 is a good OS to try, look, and explore. If you are using Ubuntu, upgrade it. If you haven’t used Ubuntu before, feel free to give it a chance.

Introduce to the version control system

Version control (aka Revision control or Source control) is the management of changes in computer files. It tracks your files over times and help you easily get back your work to a previous version. This is extremely important with a team, when many people can edit the same file.

You used it, but you don’t know …

It’s so interesting to know that you usually use the version control in your work. Perhaps there are some files named with numbers like these in your computer:

  • report-1.doc
  • report-2.doc
  • my_current_stuff_20110912.psd
  • my_current_stuff_20111011.psd

Why these file exist and have such names? You add a number or a date string to the end of the file name because you want to have a backup of your current work. If you go wrong in the future and want to have the latest good version, you can get it easily (may be not quickly). As you can see, version control plays an important roll in your work though you are not aware of it.

A version control system, huh, why do we need it?

A good version control system (VCS) will allow you to do the following stuff easily:

  • Backup and restore: files are saved when you need. You can jump to a previous version any time. You can throw many recent change and roll back to the last good version in the database. You can all so get the code from last year and what have changed when getting a bug.
  • Synchronization: all people can have a up-to-date version easily.
  • Track changes and ownership: the VCS can store the information about changes in you files and who the person who made it, which make you easily to see how a file is evolving over time.
  • Sandboxing: as its name, you can freely make and changes in you code and test it in your own computer before “checking in” what you have done.
  • Branching and merging: you can made your own copy of the code, save it in a separate location and develop it in isolation. Later, you can merge your work back into the common area.

The common words you have to know

There are many implementation of a VCS, but all of them should involve these concepts:

The basic:

  • Repository: the database storing files
  • Server: the computer has the repository
  • Client: the computer connect to the server to use the repository. The server and the client may be the same computer.
  • Trunk/Main: the primary location for your code. It is considered as the main branch of your work.

Basic actions:

  • Add: put a file (and/or a directory) into the repository in the first time.
  • Revision: the version of a file. It can be a number-liked string as 1, 2, 3, … or 1.2, 1.3, …
  • Head: the latest revision in the repository.
  • Checkout: download files from the repo to your local computer. Some VCS allow you edit the files when they were checked out, others require a explicit option when checking out, otherwise they only give you a read only version.
  • Check in: upload files to the repository. If the file exists and have changes, it will have a greater revision number. You can leave a message when checking in.
  • Changelog/History: a list of changes to a file from the time it’s added to the repository.
  • Update/Sync: ynchronize you files to the latest version (head version) of the repository.
  • Revert: throw away your local changes and roll back to the latest verion from the repo.

Advanced actions:

  • Branch: create a separate copy of your work. It is also a noun refers to the working copy which is branched.
  • Diff/Change/Delta: find the differences between two files.
  • Merge/Patch: apply changes from a file to another, for example, aplly what you did in you branch to the common work.
  • Conflict: when there are some changes which cannot be applied in a files in the same time, you know that there is a conflict.
  • Locking: make some files not allow other people to edit it. This is usually used to prevent conflict. You can unlock it later. Some person can unlock the files on purpose when needed, which is called breaking the lock.

Thanks to Kalid Azad at for this section.

Back to the real world, which tools you can use

After reading all above, you can wonder how to use a VCS, implement your own? Feel free to try, but there are many free tool can help you. SVN (subversion and GIT ( are two of them. If you are working in Linux or some console system, just get these software to your computer and you the console! For windows users, TurtoiseSVN and TurtoiseGIT (found at and can be a great choice.

Fix yahoo messenger and windows 7 gadget display error

The error manifestation

After a period of using Windows 7 or Yahoo! Messenger (Y!M), you can catch an error like this:

  • Your desktop gadgets doesn’t work and they display incorrectly
  • In the conversation window of Y!M, you cannot see either your or your partner ‘s words.

In this post, I will introduce you some ways to fixed this annoying error.

Cause of the error

There are many reasons why this evil thing happen to you. The corruption of windows registry, sidebar files or some .dll files as well as the existence of a virus can be the main factor. As a general rule of thumb, you should try from the easiest fix.

First thing to check: your windows files

Begin with your sidebar files. You can copy these file from another computer running windows 7 (of course, it current runs normally ) and paste them to the appropriate location in your one. Here, I suppose that you installed you windows in the C drive.

C:\Program Files\Windows Sidebar\sidebar.exe
C:\Program Files\Windows Sidebar\wlsrvc.dll
C:\Program Files\Windows Sidebar\Gadgets\*

Restart your computer and hope this help.

The windows .dll files error

This is also a common error of windows, you can re-register your windows .dll files to solve this problem. Open your Start menu, click Run… (or use the shortcut key “Windows key” + “R”). In the new “Run” dialogue, enter the command regsvr32 jscript.dll and click OK button, if another dialogue appears, click OK to ignore this message. Do them same thing with the command regsvr32 vbscript.dll before restarting your computer.

Check the windows registry problem

In the case that this error haven’t been solved yet, you have to check you windows registry. First, open the Registry Editor by entering the command regedt32 to the Run windows as the previous section. After the Registry Editor windows appears, you can see that it looks like the Windows Explorer windows.

Point to the key HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{f414c260-6ac0-11cf-b6d1-00aa00bbbb558}\In procServer32. Look at the right panel, if the data of (Default) values is different from C:\WINDOWS\SYSTEM32\JSCRIPT.DLL, modify it to correct value.

Next, go to another key HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\. Look at its sub keys in the left panel. If you see a strange sub key whose name is a character like the “L” letter above the 0 sub key, delete the strange sub key. Restart your computer.

The last thing I can help

If things still go wrong, you can download my pre-built bat file and run it on your computer.