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 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.wxs(44) : error LGHT0204 : ICE64: The directory ProgramMenuDir is in the user profile but is not listed in the RemoveFile table. 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. 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