PDA

View Full Version : File Types/ProgID issue in Basic MSI



cnegrila
06-29-2006, 11:06 AM
I try to associate a file extension with an executable (that my MSI installs). The executable resides in its own component as the single file, so I go to Advanced Settings->File Types and I create the extention "cls" with the ProgId "clsfile" a single verb "open" with Command Sequence "1" Display Name "Open with MyApp" and Argument "%1". I also fill out the "clsfile" ProgID with a Description and an icon file (Icon Index 1 from the executable contained in this component).

Problem: After I install the application as an MSI, the document files with the "cls" extension seem to be working fine (if I click on any of them it will launch correctly my app) however the Icon and the Description are not correct (the icon is the application's default icon, not the second icon in the executable as I specified in the ProgID and the description is just the default "CLS file" not what I typed in the ProgID in IS).

Looking in the registry, it looks like the ProgID is correctly created and associated with the extension, however there is only a "shell->open->command" key created under the ProgID and nothing about the extension of the description. I've seen that ProgID entries created for other applications (MSWord for instance) also have a DefaultIcon key and another key for the Description that seem to be lacking in my case.

I have inspected my MSI with Orca but the Extension, ProgID and Icon tables seem to be fine, at least they are the same as in IS and the icon ID from ProgID table correctly points to the entry in the Icon table.

At this point I ran out of stuff to check or to do in trying to figure this out. :( It sounds like it should be a simple thing and yet I cannot get it to work. I've even started a clean IS Basic MSI project with just one file in it (the executable) and one extension with it's ProgID but the behavior is just the same.

Any suggestions would be greatly appreciated! Thanks!

Alex

cnegrila
07-10-2006, 12:32 PM
I replicated the exact same steps to create a basic MSI project (with just one executable associated with one extension/ProgID) in IS 11.5 trial, and the MSI generated by IS 11.5 correctly registers the extension with the correct icon and description while the IS 12 generated MSI does not.

Is this a known issue with IS 12? It's pretty big and straightforward to duplicate (I also tried it with a clean IS 12 installation on a different machine, so I'm pretty sure I'm not crazy).

I guess I'm off to comparing the two MSIs in Orca and writting a tool to fix the IS 12 MSI :(

cnegrila
07-11-2006, 10:42 AM
The tables themselves (ProgID, Extension and Icon) don't seem to be different between 11.5 and 12.

However, inspecting the MSI log, here's what I get for IS 12:

MSI (s) (F0:FC) [11:11:34:523]: Doing action: RegisterProgIdInfo
Action 11:11:34: RegisterProgIdInfo. Registering program identifiers
Action start 11:11:34: RegisterProgIdInfo.
MSI (s) (F0:FC) [11:11:34:539]: Note: 1: 2205 2: 3: Class
MSI (s) (F0:FC) [11:11:34:539]: Note: 1: 2228 2: 3: Class 4: SELECT DISTINCT `BinaryType`, `ProgId`, `Class_`, `ProgId`.`Description`, `ProgId`.`Icon_`, `ProgId`.`IconIndex`, null, `Component`.`RuntimeFlags`, `Component`.`Component` FROM `ProgId`, `Class`, `Feature`, `Component` WHERE `ProgId`.`Class_` = `Class`.`CLSID` AND `Class`.`Feature_` = `Feature` AND `Class`.`Component_` = `Component` AND ((`Feature`.`Action` = 1 OR `Feature`.`Action` = 2) OR (`Feature`.`Action` = 4 AND `Feature`.`Installed` = 0) OR (`Feature`.`Action` = 3 AND (`Feature`.`Installed` = 1 OR `Feature`.`Installed` = 2 OR `Feature`.`Installed` = 4)) OR (`Feature`.`Action` = NULL AND (`Component`.`Action` = 1 OR `Component`.`Action` = 2) AND ((`Feature`.`Installed` = 1 OR `Feature`.`Installed` = 2 OR `Feature`.`Installed` = 4))))
Action ended 11:11:34: RegisterProgIdInfo. Return value 0.

This seems to be failing because the IS 11.5 log (for the MSI that works) shows a return value of 1 for this action however I don't understand from this log what's happening. Any ideas?

cnegrila
07-11-2006, 11:59 AM
Alas, the long awaited solution. :) See thread RegisterProgIdInfo fails (http://community.installshield.com/showthread.php?p=357764#post357764) for details.

ncalverley
10-20-2006, 09:14 AM
Thank goodness for this forum, I have just been having this exact same issue and spent just over an hour looking into what was going wrong.
After examining the log file and realizing that the RegisterProgIdInfo did not appear to be running at all (return 0) and could not figure out why I turned here for answers.
Low and behold another InstallShield mess up :mad: but at least this time there was a quick fix...

Daniel_Vatier
02-05-2007, 12:10 PM
I experienced the same problem. Thank you for posting the issue. I have only wasted a couple of hours checking my basic msi project.