I got error 2228 when installing a vendor MSI with a MST.
2228 = Database: [2]. Unknown table '[3]' in SQL query: [4]

I ran a validation and got pretty confused by these errors:
Component 'registry' references Registry 'registry15' as KeyPath, but the Registry table does not exist. Component KeyPath registry
Evaluation: ICE02

_Validation table: Data in KeyTAble column is incorrect; Table: Component, Column: KeyPath, Key(s): registry Component KeyPath registry
Evaluation: ICE03

Well, first of all the Registry table do exist and the the keypath looks fine.

My MST worked fine until I added some registry keys in HKCR that needed user permissions and wasnt added in the registry by the installation. Before these keys the registry table was empty.

Why is my Registry table presumed to be missing? Any ideas?
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
Did you verify that the entry in the _Validation table is correct?
What does a verbose log provide regarding the error?
Answered 01/29/2009 by: AngelD
Red Belt

Please log in to comment
0
Remember that HKCR is an amalgam of HKCU\Software\Classes and HKLM\Software\Classes? If you had put those entries into HKCU\Software\Classes directly, they wouldn't require permissions.
Answered 01/29/2009 by: VBScab
Red Belt

Please log in to comment
0
ORIGINAL: AngelD

Did you verify that the entry in the _Validation table is correct?
What does a verbose log provide regarding the error?


_Validation looks correct. I have compared to other MSI-files and I cant se any difference.

The log looks like this. Some of it is in swedish...tell me if you need it translated [;)] :
MSI (s) (F4:20) [16:56:45:491]: Note: 1: 2205 2: 3: Registry

MSI (s) (F4:20) [16:56:45:491]: Note: 1: 2228 2: 3: Registry 4: SELECT `Root`,`Key`,`Name`, `Value` FROM `Registry`,`Component` WHERE `Registry`=? AND `Registry`.`Component_` = `Component`.`Component`

DEBUG: Error 2228: Database: . Unknown table 'Registry' in SQL query: SELECT `Root`,`Key`,`Name`, `Value` FROM `Registry`,`Component` WHERE `Registry`=? AND `Registry`.`Component_` = `Component`.`Component`

MSI (c) (F0:FC) [16:56:45:553]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
Ett oväntat fel uppstod under installationen av det här paketet. Detta kan bero på ett problem med paketet. Felkoden är 2228. Argumenten är: , Registry, SELECT `Root`,`Key`,`Name`, `Value` FROM `Registry`,`Component` WHERE `Registry`=? AND `Registry`.`Component_` = `Component`.`Component`

MSI (s) (F4:20) [16:56:54:756]: Produkt: Alarmos Client -- Ett oväntat fel uppstod under installationen av det här paketet. Detta kan bero på ett problem med paketet. Felkoden är 2228. Argumenten är: , Registry, SELECT `Root`,`Key`,`Name`, `Value` FROM `Registry`,`Component` WHERE `Registry`=? AND `Registry`.`Component_` = `Component`.`Component`


ORIGINAL: VBScab

Remember that HKCR is an amalgam of HKCU\Software\Classes and HKLM\Software\Classes? If you had put those entries into HKCU\Software\Classes directly, they wouldn't require permissions.


To be honest, i didnt know that until I read about it searching for a solution for this problem. I will test to put the keys in HKLM. But i dont know if it will fix the problem above though.
Answered 01/29/2009 by: polkagris
Orange Belt

Please log in to comment
0
I will test to put the keys in HKLM. But i dont know if it will fix the problem above though.You meant HKCU, of course...HKLM is probably permissioned, whereas HKCU "belongs to" the currently logged-in user.
Answered 01/29/2009 by: VBScab
Red Belt

Please log in to comment
0
Yeah sorry, I meant HKCU of course.
Hmm, well i wont get any further today. Work hours are over here now and everybody else has gone home. :)
I will check back tonight and tomorrow and see if someone has figured something out. Hopefully i figure something out too. [;)]
Answered 01/29/2009 by: polkagris
Orange Belt

Please log in to comment
0
Sorry polkie, but according to the log the Registry table doesn't exist.
Does it work without the transform?
If so, it seems that the transform is corrupt in any way, try to create a new one and see if that helps.

Swedish is my mother tongue so had no problem translating "Ett oväntat fel" to an unexpected error ;)
Answered 01/29/2009 by: AngelD
Red Belt

Please log in to comment
0
AngelD:
Yes it works without the transform. It works WITH the transform aswell, as long as I dont add any regsitry keys! As soon as I add registry keys I'm screwed, i doesnt matter if I remove them, it still wont work and I have to create a new transform again.

Well, this is odd and I decided to add the keys through a custom action instead just to get the installation to work, and it did.

Så du är också svensk? Trevligt! [;)]
Answered 01/30/2009 by: polkagris
Orange Belt

Please log in to comment
0
You guessed correct, I'm also from Sweden (hint: check "From:") [;)]

What tool are you using to create and add the registry entry?
Could you try InstEd (www.instedit.com) and see if it does a better job?
Could you give us en example of a registry entry that breaks the table.

/Kim
Answered 01/30/2009 by: AngelD
Red Belt

Please log in to comment
2
What tool are you using to create and add the registry entry? I'll bet you have a .REG which you are importing into your packaging tool. If so, I'd simply create a new one, making sure that you export in ASCII (the lowest common denominator) rather than UTF-8 and use that.
Answered 01/30/2009 by: VBScab
Red Belt

Please log in to comment
0
Yeah, I have .reg files that I import. I havnt had time to try keys exported in ASCII, but i sure will test that.

AngelD: Below is the reg keys that messed it all up for me. I dont know if one is more bad than the other.

[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}]
[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}\b.3]
@="Objekt"
[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}\b.3\0]
[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}\b.3\0\win32]
@="C:\\Program\\Eusystem\\A_system\\objekt.exe"
[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}\b.3\FLAGS]
@="0"
[HKEY_CLASSES_ROOT\TypeLib\{A4F656FE-BB0D-449E-9D02-588728B21355}\b.3\HELPDIR]
@="C:\\hlpfiles"


[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}]
@="Objekt.cDiaPost"
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\Implemented Categories]
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\LocalServer32]
@="C:\\Program\\Eusystem\\A_system\\objekt.exe"
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\ProgID]
@="Objekt.cDiaPost"
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\Programmable]
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\TypeLib]
@="{A4F656FE-BB0D-449E-9D02-588728B21355}"
[HKEY_CLASSES_ROOT\CLSID\{56A19866-4FE0-4603-A086-1C7C493EB3BE}\VERSION]
@="11.3"


[HKEY_CLASSES_ROOT\Objekt.cDiaPost]
@="Objekt.cDiaPost"
[HKEY_CLASSES_ROOT\Objekt.cDiaPost\Clsid]
@="{56A19866-4FE0-4603-A086-1C7C493EB3BE}"
Answered 01/30/2009 by: polkagris
Orange Belt

Please log in to comment
0
I havnt had time to try keys exported in ASCII, but i sure will test that.In RegEdit, choose 'Windows NT4' as the file type to get ASCII.
Answered 01/30/2009 by: VBScab
Red Belt

Please log in to comment
0
ORIGINAL: VBScab

I havnt had time to try keys exported in ASCII, but i sure will test that.In RegEdit, choose 'Windows NT4' as the file type to get ASCII.



Ok, thanks
Answered 01/30/2009 by: polkagris
Orange Belt

Please log in to comment
0
ORIGINAL: VBScab
I'll bet you have a .REG which you are importing into your packaging tool. If so, I'd simply create a new one, making sure that you export in ASCII (the lowest common denominator) rather than UTF-8 and use that.


Not that it made me any wiser, but it worked!
The installation finishes without any problems and the registry keys gets written.

Many thanks and +2. [;)]
Answered 01/30/2009 by: polkagris
Orange Belt

Please log in to comment
0
You could just have used WiseComCap.exe (or what it is called, never remember the exact name for it) to generate the .reg file for you for the "C:\Program\Eusystem\A_system\objekt.exe" COM-server component. Or was it that you did or by regedit?
Answered 01/30/2009 by: AngelD
Red Belt

Please log in to comment
0
No "advanced" stuff when generating .reg files. Just right click - Export in regedit.
Answered 01/30/2009 by: polkagris
Orange Belt

Please log in to comment
0
And by the way, make sure to turn off the convert registry to advertise option to get all of the entries into the Registry table if that is what you wanted. Other option would be to "advertise" the registration of the COM-component to get some extra entrypoints for your Windows Installer resiliency (self-check, repair).
Answered 01/30/2009 by: AngelD
Red Belt

Please log in to comment
Answer this question or Comment on this question for clarity