Hello,

I have read several other messages about shortcuts and I understand that
shortcuts are very difficult. I have successfully created advertised
shortcuts, but I am unable to create unadvertised shortcuts.

What I do is the following:

I create the following directory structure:
ProgramMenuFolder\VendorName\ProductName.
Building this gives me 4 errors: ICE18, ICE38, ICE64, ICE64. I solve the
ICE18 and ICE64 errors by creating a component in the directory with two
removeFolder actions (one for the ProductName folder and one for the
VendorName folder).

I solve the ICE38 error by adding a RegistryKey entry in the HKMU with
key Software\VendorName\Productname\Version\Install.
This key will be created in HKLM on a per-machine installation and in
HKCU on a per-user installation (which is correct I think).

Now I can create advertised shortcuts in this directory. I do this by
adding a child shortcut element in a file element. This works.

Now the unadvertised shortcut:

I create another component in the
ProgramMenuFolder\VendorName\ProductName directory. In the component I
add a shortcut which is unadvertised.
Building this gives me 3 errors: ICE18, ICE38, ICE43. I solve the errors
by creating a RegistryValue in the HKMU with the key
Software\VendorsName\ProductName\Version\Install\UnadvertisedShortcut
and an integer value of 1. (which is the same solution as described
above for the directory structure in the start menu).

Building this gives me 1 error: ICE57. It claims that the component has
per-user data and a keypath that can be per-user or per-machine. That I
don't understand. When a per-machine installation is done, the shortcut
is created in the "all users" start menu and the registry key is created
in HKLM. (is the "all users" startmenu a user directory?)

I also tried to change the location of the registry key to HKCU. This
solves the ICE57 error, but then the key is created in the registry of
the user who is installing the application. Even when a per-machine
installation is done. I don't think this is correct. (Correct me if I'm
wrong)

For now I decided to use advertised shortcuts. But it would be nice to
use unadvertised shortcuts too. I wonder how a Wise or InstallShield
installation deals with this problem.

An example with a working advertised shortcut and a failing unadvertised
shortcut:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>
  <Product Id="76125a4b-6d52-4fac-88a4-fa04c6cb19a6" Name="MyApp"
Language="1033" Version="1.0.0.0" Manufacturer="Vendor"
UpgradeCode="6a424610-c976-4487-a667-137242f8b536">
    <Package InstallerVersion="200" Compressed="yes" />
    <Media Id="1" Cabinet="MyApp.cab" EmbedCab="yes" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <!-- Program files folders -->
      <Directory Id="ProgramFilesFolder">
        <Directory Id="VendorFolder">
          <Directory Id="INSTALLLDIR" Name="MyApp">
            <!--Executable with advertised shortcut -->
            <Component Id="ProductComponent"
Guid="73c20b23-2ee1-4998-9fff-b3a2384cde9e">
              <File Id="MyApp.exe" Name="MyApp.exe"
Source="..\MyApp\bin\debug\MyApp.exe">
                <Shortcut Id="MyApp.exe" Directory="StartMenuDir"
Name="MyApp" WorkingDirectory="INSTALLDIR" Advertise="yes" />
              </File>
            </Component>
          </Directory>
        </Directory>
      </Directory>
      <!-- Start menu folders -->
      <Directory Id="ProgramMenuFolder">
        <Directory Id="VendorStartMenu" Name="Vendor">
          <Directory Id="StartMenuDir" Name="MyApp">
            <!-- Make sure the start menu is created and deleted on
install/uninstall and is 'per user' -->
            <Component Id="StartMenuEntries"
Guid="{53F60C9B-95D2-427e-804B-D133833D6E98}" DiskId="1">
              <!-- Create registry key (which makes this component
dependant on the registry and not on a file) -->
              <RegistryKey Id="MyApp"
Key="SOFTWARE\Vendor\MyApp\1.00\Install" Root="HKMU"
Action="createAndRemoveOnUninstall" />
              <!-- Make sure the start menu is cleaned on unstall -->
              <RemoveFolder Id="StartMenuDir" On="uninstall"
Directory="StartMenuDir" />
              <RemoveFolder Id="VendorStartMenu" On="uninstall"
Directory="VendorStartMenu" />
            </Component>
            <!--Unadvertised shortcut -->
            <Component Id="UnadvertisedShortcut"
Guid="{A09E5CD1-548E-4aa3-AA62-721BAF6BEAB4}">
              <!-- HKMU gives ICE57, HKCU works but I think that is not
the correct location for the key -->
              <RegistryKey Key="SOFTWARE\Vendor\MyApp\1.00\Install"
Root="HKMU" Action="none">
                <RegistryValue Id="UnadvertisedShortcut"
Name="UnadvertisedShortcut" Type="integer" Value="1" Action="write"
KeyPath="yes" />
              </RegistryKey>
              <Shortcut Id="Unadvertisedshortcut" Name="MyApp
(UnAdvertised)" Directory="StartMenuDir" WorkingDirectory="INSTALLDIR"
Target="[!MyApp.exe]" Advertise="no" />
            </Component>
          </Directory>
        </Directory>
      </Directory>
    </Directory>
    <Feature Id="ProductFeature" Title="MyApp" Level="1">
      <ComponentRef Id="ProductComponent" />
      <ComponentRef Id="StartMenuEntries" />
      <ComponentRef Id="UnadvertisedShortcut" />
    </Feature>
  </Product>
</Wix>

---

Bart Kapitein
E-mail disclaimer / confidentiality footer

Dit e-mail bericht is slechts bestemd voor de (rechts)persoon aan wie het is 
gericht en kan informatie bevatten die persoonlijk of vertrouwelijk is en niet 
openbaar mag worden gemaakt krachtens wet-, regelgeving of overeenkomst. Indien 
u niet de geadresseerde(n) (of verantwoordelijk voor de bezorging van dit 
bericht bij de juiste persoon) bent, wordt u verzocht de verzender hiervan 
direct op de hoogte te stellen. Kodision B.V. staat niet in voor de juiste en 
volledige overbrenging van de inhoud van een verzonden e-mail, noch voor 
tijdige ontvangst daarvan. Aan dit e-mail bericht kunnen geen rechten worden 
ontleend. Meningen, conclusies en andere informatie in dit bericht die niet 
gerelateerd zijn aan de officiele bedrijfsactiviteiten van Kodision B.V., 
dienen geinterpreteerd te worden als niet gegeven of op enigerlei wijze 
gesteund door Kodision B.V. 

This e-mail message is intended to be exclusively for the addressee and 
privileged/confidential information may be contained in this message. If you 
are not the addressee indicated in this message (or responsible for delivery of 
the message to such person), you may not copy or deliver this message to anyone 
and notify the sender immediately by returning this e-mail message. Kodision 
holds no responsibility for possible delay of this message and can not 
guarantee the complete and full transmission of its content. No rights can be 
derived from this message. Opinions, conclusions and other information in this 
message that do not relate to the official business of Kodision B.V. shall be 
understood as neither given nor endorsed by it.

-------------------------------------------------------------------------
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

Reply via email to