Please forgive my ignorance but creating a per-user reg key as a keypath for a per-machine shortcut seems very wrong in that the reg key can easily become orphaned.
Perhaps this is why the Windows Server 2008 Software Logo Specifications<http://go.microsoft.com/fwlink/?LinkID=111723>don't include ICEs 43 or 57... On Wed, Oct 22, 2008 at 8:35 PM, Sébastien Mouren < [EMAIL PROTECTED]> wrote: > 2008/10/22 Matt Siebert <[EMAIL PROTECTED]>: > > Hi all, > > > > I'm new to WiX and I'm trying to create a test install for a single file > > with a shortcut in the "All Users" profile. > > > > The file I'm installing is going to %programfiles%\Company\Product and I > > want to place a shortcut in %allusersprofile%\Desktop. > > > > I've done a lot of googling and searched the archives for this mailing > list > > and it seems that everyone who has had a similar problem has been > directed > > to > > > http://robmensching.com/blog/archive/2007/04/27/How-to-create-an-uninstall-shortcut-and-pass-all-the.aspx > , > > but I can't see how that post solves the issue - it installs shortcuts to > > the current user's profile using a RegistryValue as the KeyPath (I > already > > did this to create a per-user test install) but doesn't show how to > install > > shortcuts to the "All Users" profile in a per-machine install. > > > > Here is my very simple product.wxs: > > > > <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> > > <Product Id="{PUT-GUID-HERE}" Name="Product" Language="1033" Version=" > > 1.0.0.0" Manufacturer="Company" UpgradeCode="{PUT-GUID-HERE}"> > > <Package InstallerVersion="200" Compressed="yes"/> > > <Media Id="1" Cabinet="TestApp.cab" EmbedCab="yes"/> > > <Property Id="ALLUSERS" Value="1"/> > > > > <Directory Id="TARGETDIR" Name="SourceDir"> > > <Directory Id="ProgramFilesFolder"> > > <Directory Id="CompanyFolder" Name="Company"> > > <Directory Id="APPLICATIONROOTDIRECTORY" Name="Product"/> > > </Directory> > > </Directory> > > <Directory Id="DesktopFolder"/> > > </Directory> > > > > <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> > > <Component Id="TestApp" Guid="{PUT-GUID-HERE}"> > > <File Source="Product.exe" KeyPath="yes" Checksum="yes" > Vital="yes"> > > <Shortcut Id="TestAppShortcut" Name="Product" > > Directory="DesktopFolder"/> > > </File> > > </Component> > > </DirectoryRef> > > > > <Feature Id="MainApplication" Title="Main Application" Level="1" > > Absent="disallow" AllowAdvertise="no"> > > <ComponentRef Id="TestApp"/> > > </Feature> > > </Product> > > </Wix> > > > > I've set ALLUSERS=1 and this should cause the DesktopFolder property to > > point to the desktop folder in the "All Users" profile on the target > > machine. > > > > I get the following errors from light.exe: > > > > error LGHT0204: ICE43: Component TestApp has non-advertised shortcuts. It > > should use a registry key under HKCU as its KeyPath, not a file. > > error LGHT0204: ICE57: Component 'TestApp' has both per-user and > per-machine > > data with a per-machine KeyPath. > > > > Surely its possible to install non-advertised shortcuts to the "All > Users" > > profile... > > > > Any help would be greatly appreciated. > > > > Thanks, > > Matt. > > The common desktop and a user's desktop uses the same DesktopFolder > property: the ALLUSERS property allows to choose between the two. > Some ICE tests implements "best practices compliance" defined by the > Windows Installer team. These best practices makes harder sometimes > for the user to think its setup . There are a few corner case and you > seem to be in one of these. > A few workaround are possible: > -your setup needs to be deployed per machine (ProgramFilesFolder and > shortcut place in the common DesktopFolder), why don't you advertise > your shorcut and enforce local deployment of the parent feature? > -create, as other indicated in their answers, another component like this > one: > <Component Id="Shortcut" Guid="*" Directory="ProgramFilesFolder"> > <RegistryKey Id='TestAppKey' Root='HKCU' > Action='createAndRemoveOnUninstall' Key='Software\Company\Product'> > <RegistryValue Id='TestAppValue' Name='TestAppValue' > Type='string' Value='installed' Action='write' KeyPath='yes' /> > </RegistryKey> > <Shortcut Id="Link" > Name="Product" > Description="My Application Description" > WorkingDirectory="APPLICATIONROOTDIRECTORY" > Directory="DesktopFolder" > Target="[APPLICATIONROOTDIRECTORY]Product.exe" /> > </Component> > include this one in your only feature. This one is trickier but read > ICE 57 > (http://msdn.microsoft.com/en-us/library/aa368994(VS.85).aspx<http://msdn.microsoft.com/en-us/library/aa368994%28VS.85%29.aspx> > ) > and 43 > (http://msdn.microsoft.com/en-us/library/aa368968(VS.85).aspx<http://msdn.microsoft.com/en-us/library/aa368968%28VS.85%29.aspx> > ). > They explain why you should use another component, a per-user reg key > as a keypath for a per-machine shortcut. It has a default of orphaning > registry key and value if reinstalled multiple times by different > users. > This snippet won't work as is: requires some cleaning and corrections > to your original example. > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users