inline

 

-----Original Message-----
From: John Calcote [mailto:[EMAIL PROTECTED]
Sent: Friday, August 11, 2006 2:39 PM
To: wix-users@lists.sourceforge.net; [EMAIL PROTECTED]
Subject: RE: [WiX-users] ORCA validation issue with wixgeneratedinstaller

 

Derek,

 

I've had a chance to get back to this installer now, and I'm still having problems finding enough information to help me understand the correct WIX constructs to use for this "non-advertised shortcut" error I'm getting:

 

c:\> candle -nologo openslp.wxs openslp_files.wxs openslp.wxs openslp_files.wxs

 

c:\> light -nologo -out openslp_2.0.0_x86.msi openslp.wixobj openslp_files.wixobj -ext WixUIExtension -cultures:en-us"

openslp_files.wxs(30) : error LGHT0204 : ICE03: Invalid Filename;

Table: Shortcut, Column: Name, Key(s): FAQ_shortcut

[DerekC] Hard to diagnose this without seeing what the row in the Shortcut table looks like.  You can temporarily skip MSI validation with –sval to see what the MSI looks like.

openslp_files.wxs(28) : error LGHT0204 : ICE43: Component FAQ_comp has non-advertised shortcuts. It should use a registry key under HKCU as its KeyPath, not a file.

[DerekC] It needs a dummy registry key under HKCU, just like the warnings says.

openslp_files.wxs(28) : error LGHT0204 : ICE57: Component 'FAQ_comp'

has both per-user and per-machine data with a per-machine KeyPath.

[DerekC] If you want to use non-advertised shortcuts (those without an Advertised attribute) then they should go in separate components since there are scenarios in which the user can force them to install to per-user or per-machine locations.  To use an advertised shortcut, just add Advertise=”Yes”

openslp.wxs(44) : error LGHT0204 : ICE64: The directory ProgramMenuDir is in the user profile but is not listed in the RemoveFile table.

[DerekC] Add it to the RemoveFile table with <RemoveFolder Id=”WHATEVER” Directory=”ProgramMenuDir” On=”uninstall” />

 

Here's the code in context for each error :

 

openslp_files.wxs(28) : error LGHT0204 : ICE43: Component FAQ_comp has non-advertised shortcuts. It should use a registry key under HKCU as its KeyPath, not a file.

openslp_files.wxs(28) : error LGHT0204 : ICE57: Component 'FAQ_comp'

has both per-user and per-machine data with a per-machine KeyPath.

openslp_files.wxs(30) : error LGHT0204 : ICE03: Invalid Filename;

Table: Shortcut, Column: Name, Key(s): FAQ_shortcut

 

28: <Component Id="FAQ_comp" DiskId="1"

Guid="EFF22D3D-E8E3-4E67-AD0B-7CDC83735ABC">

29:   <File Id="file6" Name="faq.html"

Source="C:\dev\svnprojects\openslp-trunk\openslp.msi\OpenSLP\Docs\html\faq.html">

30:     <Shortcut Id="FAQ_shortcut" Directory="ProgramMenuDir"

Name="OpenSLP 2.0 FAQ" WorkingDirectory="INSTALLDIR" />

31:   </File>

32: </Component>

 

openslp.wxs(44) : error LGHT0204 : ICE64: The directory ProgramMenuDir is in the user profile but is not listed in the RemoveFile table.

 

42: <Directory Id="TARGETDIR" Name="SourceDir">

43:   <Directory Id="ProgramMenuFolder" Name="Programs">

44:     <Directory Id="ProgramMenuDir" Name="OpenSLP 2.0" />

45:   </Directory>

46:   <Directory Id="DesktopFolder" Name="Desktop" />

47:   <Component Id="EMPTY_comp" DiskId="1"

Guid="D9A267D1-222E-4FE3-9B6C-1E1D5E055F1D" />

48: </Directory>

 

It looks like there are about 4 different errors here, but I think if I can get the non-advertised shortcuts thing ironed out, I'll be most of the way. The trouble is that I don't have enough information for mapping WIX constructs to MSI Database constructs. The documentation is great as a reference, but lacks the examples to tie things together. Reading through MSI docs helps me understand what an advertised shortcut is, but doesn't tell me how to map it to WIX.

[DerekC] Try the opposite direction – each WiX element’s documentation will include a link to the matching MSI table it creates.  For example, the Shortcut element contains a link under “Windows Installer references” to the Shortcut Table documentation.

 

Thanks in advance,

John

 

>>> "Derek Cicerone" <[EMAIL PROTECTED]> 7/24/2006 5:21 PM

>>> 

I believe it needs to look something like the following pseudo-code:

 

<Component>

  <Registry Root="HKCU" KeyPath="yes" ... />

  <Shortcut ... />

</Component>

 

Basically, what you need to do is create a component with an HKCU registry key as its keypath and the shortcut.  When MSI does a health check on the component to see if it's installed for the current user, it will look for a registry key to be present, when its not there, it will install the shortcut, thus ensuring that all users on the machine get the shortcut installed.

 

MSI does not do health-checks on shortcuts, only registry keys, files, directories, and ODBC stuff.  Since the file pointed to by the shortcut is likely installed (since it's in a per-machine location), only per-user stuff is suitable for checking if everything is installed for the current user.

To accomplish that, a registry key is the most lightweight thing to use as a keypath for determining if everything is installed.

 

If you'd like more info on this stuff, I'd suggest checking out the MSI documentation.  It contains a lot of information, so stuff can be hard to find at times, but all this stuff I'm talking about is in there.

 

Derek

 

-----Original Message-----

From: John Calcote [mailto:[EMAIL PROTECTED]

Sent: Monday, July 24, 2006 3:47 PM

To: wix-users@lists.sourceforge.net; [EMAIL PROTECTED]

Subject: RE: [WiX-users] ORCA validation issue with wixgeneratedinstaller

 

Derek,

 

Okay, the subtle approach didn't work. Now I'll try the less subtle version of my question ;-)...

 

I don't really understand how a registry key is associated with a shortcut - shortcuts are files in the file system, not registry keys, AFAIK. This is a more fundamental question. Perhaps it would be more obvious to me what I should do if I understood the more base concept.

 

What does it actually mean to "create any HKCU registry key I like, and use it as the keypath"? Can you give me an example of doing this? I just don't understand the reason why this has to be done (nor do I understand the actual syntax of doing it, but if I understood the meaning of associating a registry key in the User hive with a shortcut, perhaps I could glean the syntax on my own. :)

 

Thanks in advance,

John

 

>>> "Derek Cicerone" <[EMAIL PROTECTED]> 7/24/2006 4:32 PM

>>> 

It's a very good question actually and I've seen no solid recommendation on a best-practice approach.  I think you can create any HKCU registry key you like and use it as the keypath (so long as each component has a different key).  This issue comes up often so I'll see if I can learn more, but that's what I know so far.

 

Derek

 

-----Original Message-----

From: John Calcote [mailto:[EMAIL PROTECTED]

Sent: Monday, July 24, 2006 3:27 PM

To: wix-users@lists.sourceforge.net; [EMAIL PROTECTED]

Subject: RE: [WiX-users] ORCA validation issue with wix generatedinstaller

 

Thanks Derek,

 

Can you recommend the proper WiX construct for creating the HKCU key associated with the shortcuts - I have several of these messages, and I want to do it the right way, not experiment for days until I come up with the proper one accidentally. :) I've looked in the Tutorial and Help documents and I can't find a reference to this issue. If you know where the information is, please feel free to refer me to the proper pages.

 

Thanks,

John

 

>>> "Derek Cicerone" <[EMAIL PROTECTED]> 7/24/2006 3:21 PM

>>> 

That means that the component needs to have a registry key under HKCU as its keypath.  This supports installation of per-user shortcuts for a per-machine installation.

 

Alternatively, you could switch to advertised shortcuts by specifying Advertise="yes" on the Shortcut elements.  However, advertised shortcuts may cause undesirable demand-install behavior.

 

Derek

 

-----Original Message-----

From: [EMAIL PROTECTED]

[mailto:[EMAIL PROTECTED] On Behalf Of John Calcote

Sent: Monday, July 24, 2006 12:18 PM

To: wix-users@lists.sourceforge.net

Subject: [WiX-users] ORCA validation issue with wix generated installer

 

Hi,

 

Can anyone tell me what the following error message from the Orca Validator means:

 

ICE43 ERROR Component PROGUID_comp has non-advertised shortcuts. It

should use a registry key under HKCU as its KeyPath, not a file.

 

??

 

Thanks,

John

 

-------------------------------------------------------------------------

Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

 

 

 

_______________________________________________

WiX-users mailing list

WiX-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/wix-users

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to