views:

178

answers:

2

I have a pretty basic c# winforms project that has an associated setup project. It has one custom dialog (Textboxes (A)). When I run the installer, it freezes when I click Next to go to the Select Installation Folder dialog. Then after several minutes, it unfreezes. When I finally click Install, the window disappears but msiexec.exe is still running in the background (two of them actually).

Could someone please tell me what the heck is going wrong?

EDIT: Here's the msiexec log: http://www.mediafire.com/?jqmmimwjgni

+1  A: 

I found it! I'm pretty sure this is a bug of some sort with the Setup project (can someone else confirm this?).

EDIT: See 0xA3's answer for the real reason as to why this fails.

Steps to reproduce:

  1. Add Textboxes (A).
  2. Add a set one of the Edit1Property, Edit2Property etc to DATABASE something GREATER than 7 characters.
  3. Rebuild and install the project (it should hang on the Select Installation Folder screen).

Hope this helps someone.

PS - Worst bug ever to track down :)

A bug report has been logged with Microsoft.

TheCloudlessSky
I confirmed this again morning on my work laptop.
TheCloudlessSky
I tried to reproduce the problem but I couldn't see any attachment on the Connect issue. Are you sure it is uploaded?
0xA3
Yeah it *is* attached... but it was only for Microsoft's eyes. The reason for that was because the project had my personal name in it and didn't really want that to be available for download. Did you try following the updated steps? If you'd like, I could send you the project.
TheCloudlessSky
+1 for the frustration to track this nasty thing down.
0xA3
A: 

The problem does not seem to be the length of the name, but the fact that the name DATABASE is used as an internal MSI property containing the full filename of the installer file1.

If you bind your edit field to that property the value of this property will be overwritten with whatever the edit field contains.

MSI doesn't like that. Unfortunately, I could not find any place where it is documented that the name DATABASE is reserved (The built-in MSI properties are documented here). So I wouldn't say this is a bug in MSI, but bad documentation/developer usability (as it is unfortunately too often the case with Windows Installer).

In your log file you will find the following entries:

MSI (c) (64:1C) [19:30:12:339]: PROPERTY CHANGE: Modifying DATABASE property. Its current value is 'd:\ ... mysetup.msi'. Its new value: 'ProgressNotes'.

And later on when the installer is hanging:

MSI (c) (64:68) [19:30:41:701]: Note: 1: 1314 2: ProgressNotes

Here should probably appear the full path to your MSI file...

Solution: Use any other name that is not reserved.

1You can easily see this if you set Edit1Property to 'DBProperty' and Edit1Value to '[DATABASE]' (without the single quotes).

0xA3
Yup you're right. mrdivo on Connect pointed this out earlier today and and then I had a "D'OH!" moment where I realized I didn't try anything *other than* 'DATABASE' (I was so concerned with setting this name heh). I'm marking this as the answer because if others find this I want them to read it. Thanks for all your help 0xA3 - what a nasty bug!
TheCloudlessSky