[wix-users] Struggling with ICE38 for a per-machine MSI

Joseph Musser me at jnm2.com
Mon Oct 31 11:56:07 PDT 2016


HKMU fails with "ICE57: Component 'ApplicationShortcut' has both per-user
data and a keypath that can be either per-user or per-machine."
Mine isn't advertised either.


On Mon, Oct 31, 2016 at 2:38 PM, Hoover, Jacob <Jacob.Hoover at greenheck.com>
wrote:

> HKMU works for me, though I do have Advertise=No on it.
>
>     <DirectoryRef Id="DesktopFolder">
>       <Component Id="Shortcut.Desktop" >
>         <Condition>INSTALLDESKTOPSHORTCUT</Condition>
>         <RegistryKey Root="HKMU" Key="Software\AppName\$(var.Ap
> plicationFolderName)">
>           <RegistryValue Name="Desktop" Value="1" Type="integer"
> KeyPath="yes"/>
>         </RegistryKey>
>         <Shortcut Id="DesktopShortcut"
>                   Name='$(var.ShortcutDescription)'
>                   Target='[!App_exe]'
>                   Description='Shortcut to $(var.ShortcutDescription)'
>                   Directory="DesktopFolder"
>                   WorkingDirectory='ApplicationBin'/>
>       </Component>
>     </DirectoryRef>
>
> -----Original Message-----
> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf
> Of Joseph Musser
> Sent: Monday, October 31, 2016 1:22 PM
> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
> Subject: Re: [wix-users] Struggling with ICE38 for a per-machine MSI
>
> So per-user registry keys are mandatory for all shortcuts? There's no
> other workaround? Yuck. I really wish this could be cleaner.
>
> On Mon, Oct 31, 2016 at 1:39 PM, Bob Arnson <bob at firegiant.com> wrote:
>
> > It's not a bug; MSI lets you specify ALLUSERS at install time. It's a
> > public property so someone could try to make a per-machine package
> > per-user. *That* is fairly silly but it is what it is and that's why
> > the ICEs "ignore" what the package authored for ALLUSERS.
> >
> > -----Original Message-----
> > From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
> > Behalf Of Hoover, Jacob
> > Sent: Monday, 31 October, 2016 13:14
> > To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
> > Subject: Re: [wix-users] Struggling with ICE38 for a per-machine MSI
> >
> > I believe this semi-related to a buggy ICE that Rob once blogged
> > about.  I handled it with a HKMU registry value, however I think that
> > introduces a second ICE57, that I ended up suppressing.
> >
> >
> > -----Original Message-----
> > From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
> > Behalf Of Carlos Sosa
> > Sent: Monday, October 31, 2016 12:01 PM
> > To: 'WiX Toolset Users Mailing List' <wix-users at lists.wixtoolset.org>
> > Subject: Re: [wix-users] Struggling with ICE38 for a per-machine MSI
> >
> >
> > <Fragment>
> >     <Component Directory="StartMenu" Id ="CMP_StartMenuShortcut"
> >                Guid ="DEXXXXDC-8XXE-4XX4-AXX8-4CXXXX3XXDD2">
> >       <Shortcut Id ="ApplicationShortcut"
> >                 Name ="$(var.ProductName)"
> >                 Description ="ShortCut"
> >                 Target ="[INSTALLFOLDER]test.txt"
> >                 Icon="icon.ico" />
> >
> >       <RemoveFolder Id="RemoveStartMenuShortcut"
> >                     On="uninstall"/>
> >
> >       <RegistryValue Root ="HKCU"
> >                      Key="Software\Microsoft\MyApp"
> >                      Name="Installed"
> >                      Type="integer"
> >                      Value="1"
> >                      KeyPath="yes" />
> >     </Component>
> >   </Fragment>
> >
> >
> >
> > -----Original Message-----
> > From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
> > Behalf Of Joseph Musser
> > Sent: Monday, October 31, 2016 10:45 AM
> > To: wix-users at lists.wixtoolset.org
> > Subject: [wix-users] Struggling with ICE38 for a per-machine MSI
> >
> > I'm getting: "Component ApplicationShortcut installs to user profile.
> > It must use a registry key under HKCU as its KeyPath, not a file."
> >
> > Why does the shortcut component install to user profile and how can I
> > force it to install per-machine?
> >
> > I think the shortcut must be in its own component because I want to
> > make the install conditional on a checkbox. Also, the target is a file
> > in a fragment generated by heat so I can't nest the shortcut element
> > inside a file element.
> >
> > All the guidance I can find says that you must use a per-user registry
> > key, but I *do not* want anything installed per-user. Everything must
> > be per-machine.
> >
> > Thanks!
> >
> >
> > Code:
> >
> > ```
> > <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
> >   <Product Id="****" Name="****" Language="1033" Version="2.0.17.0"
> > Manufacturer="****" UpgradeCode="****">
> >     <Package Description="****" InstallerVersion="200" Compressed="yes"
> > InstallScope="perMachine" />
> >
> >     <MajorUpgrade DowngradeErrorMessage="A newer version of
> > [ProductName] is already installed." />
> >     <MediaTemplate EmbedCab="yes" CompressionLevel="high"/>
> >
> >     <!--Property Id="InstallApplicationStartMenuShortcut" /-->
> >
> >     <Directory Id="TARGETDIR" Name="SourceDir">
> >       <Directory Id="ProgramFilesFolder">
> >         <Directory Id="APPLICATIONFOLDER" Name="****" />
> >       </Directory>
> >       <Directory Id="ProgramMenuFolder">
> >         <Directory Id="ApplicationProgramsFolder" Name="****">
> >           <Component Id="ApplicationShortcut" Guid="****">
> >             <Condition>InstallApplicationStartMenuShortcut</Condition>
> >             <Shortcut Id="ApplicationStartMenuShortcut"
> >                       Name="****"
> >                       Description="****"
> >                       WorkingDirectory="APPLICATIONFOLDER"
> >                       Target="[APPLICATIONFOLDER]Client.exe" />
> >             <RemoveFolder Id="RemoveShortcut"
> > Directory="ApplicationProgramsFolder" On="uninstall" />
> >           </Component>
> >         </Directory>
> >       </Directory>
> >     </Directory>
> >
> >     <Feature Id="Complete" Level="1" Title="****">
> >       <ComponentGroupRef Id="HeatGeneratedFragmentComponentGroupId" />
> >       <ComponentRef Id="ApplicationShortcut" />
> >     </Feature>
> >   </Product>
> > </Wix>
> > ```
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>



More information about the wix-users mailing list