Adobe Reader Update: Installation Incomplete

Today I got a update dialog from Adobe Reader, it wanted to update my Reader to v8.1.2.
Fine.
It downloaded the update and starts to install it.

However, in the System Tray I got the following little guy:
Adobe Updater needs you attention

So I click it, and the Adobe Updater tells me the following:
Installation Incomplete. The installation process has encountered a problem.

Hmm… ok.
It doesn’t say what problem it encountered. Just "The installation process has encountered a problem". So maybe I can find some information in the Application event Log?
No, nothing there.
Maybe there is a log file somewhere?

So I fire up Mark Russinovic’s Handle.exe, which tells me that there is a log file in \AppData\Local\Adobe\Updater5\aum.log. In there I find the following line:

 

2008-02-07 10:13:05: MsiInstallProduct returned: rc= = 1618

 

Ok
http://www.installsite.org/pages/en/msifaq/error/1618.htm tells me that 1618 means:

Another installation is already in progress. Complete that installation before proceeding with this install.
Ok.

Adobe, wouldn’t it be nice if the AdobeUpdater.exe could tell me this in the dialog instead of just saying "The installation process as encountered a problem"?

Getting the Webhost4life Application Firewall Alert error message

Well, just when I thought I was thru with strange error messages on my Webhost4life account,
I suddenly got this error message when I put up a link for download a zip-file:

 

Webhost4life Application Firewall Alert Your request triggered an alert! If you feel that you have received this page in error, please contact the administrator of this web site.

That’s not nice.

Since I previously have had success turning off their Security Guard feature,

I immediately went in to the control panel and turned it off this time also.

And it worked this time also. So if you want to have download links on your Webhost4life account, please turn off the Security Guard feature.

Following up on the Re-mapping the universe GUI

The well known, at least for us geek’s, technology used in the movie Minority Report, which enables one to control and manipulate the user interface with your hand movements. Perceptive Pixel showcased their technology with this video (Direct link):

Read the full article.

Microsoft has also some ideas on how they see this technology evolve. They call it the Microsoft Surface technology.

image

And now, the latest contenders in this fascinating technique is Cynergy Labs

image

You can watch the demo video here.

 

How to data bind a ToolStripComboBox

Normally, the ToolStripComboBox doesn’t have any properties for data binding. But you can still data bind this combobox with the method I describe here. Since the ToolStripComboBox hosts a Control that inherits from ComboBox, you can type cast to a ComboBox and do the data binding.

In this example I will bind the ToolStripComboBox to an ArrayList which consists of objects of the type ColorTypes.

So, lets get started. First create the ColorType class:

namespace WindowsFormsApplication1
{
public class ColorType
{
private int _ID;
public int ID
{
get
{
return _ID;
}
set
{
_ID = value;
}
}
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public ColorType(int id, string name)
{
_ID = id;
_Name = name;
}
}
}

Second, in the Form that hosts the TollStripComboBox, create an ArrayList of the objects. In the Load method, cast the ToolStripComboBox to a ComboBox and do the data binding. And finally, in the SelectedIndexChanged event for the ToolStripComboBox, type cast to a ComboBox and read out the SelectedValue property.

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private ArrayList arrListColorTypes;
 
 
public Form1()
{
InitializeComponent();
arrListColorTypes = new ArrayList();
arrListColorTypes.Add(new ColorType(0, "Red"));
arrListColorTypes.Add(new ColorType(1, "Green"));
arrListColorTypes.Add(new ColorType(2, "Blue"));
}
private void Form1_Load(object sender, EventArgs e)
{
ComboBox cb = ((ComboBox)toolStripComboBox1.Control);
cb.DisplayMember = "Name";
cb.ValueMember = "ID";
cb.DataSource = arrListColorTypes;
}
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int index = Convert.ToInt32(((ComboBox)toolStripComboBox1.Control).SelectedValue);
switch (index)
{
case 0: // Do the Red dance
break;
case 1: // Do the Green dance
break;
case 2: // Do the Blue dance
break;
}
}
}
}