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

Joseph Musser me at jnm2.com
Mon Oct 31 12:13:55 PDT 2016


I figured out I can pass light -sice:ICE38 -sice:ICE43. Nothing seemed to
go wrong installing and uninstalling. While I dislike suppressing errors,
the alternative is less desirable.
I don’t see other installers creating a registry value for each user for
each shortcut. It seems super weird that it’s acceptable to direct people
to do that.

Thanks for the help!
​

On Mon, Oct 31, 2016 at 2:56 PM, Joseph Musser <me at jnm2.com> wrote:

> 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