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) and 43 (http://msdn.microsoft.com/en-us/library/aa368968(VS.85).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