2009-04-15 11 views
9

Tworzę plik msi instalatora przy użyciu zestawu narzędzi XML Instalatora Windows. Podczas instalowania utworzonego pliku msi skrót znajdujący się w folderze ProgramMenuFolder powoduje utworzenie skrótu tylko dla użytkownika Administrator. W jaki sposób mogę pozwolić instalatorowi utworzyć skrót w profilu Wszyscy użytkownicy, aby wszyscy na komputerze mieli skrót? blogJak zainstalować skróty do programów dla wszystkich użytkowników?

Odpowiedz

4

Stuarta Preston ma dobry opis jak to zrobić:

Installing a shortcut for "All Users" (via Wayback Machine)

Edit:

W Synopsys jest:

W pliku .wxs, obejmują:

<Property Id="ALLUSERS"><![CDATA[2]]></Property> 

Spowoduje to ustawienie właściwości, która naśladuje zachowanie wybierania numeru "Wszyscy użytkownicy" zamiast "Just Me" dla swojej instalacji. Będziesz potrzebują struktury katalogów podobny do następującego też:

<Directory Id='ProgramMenuFolder' Name='PMenu' LongName='Programs'> 
<Directory Id='MyProductShortcutDir' Name='MyPMenu' LongName='MyProduct' /> 
</Directory> 

Wreszcie, skrót powinien znajdować się w elemencie „Plik”, w następujący sposób:

<File Id="MyProduct.File0" LongName="MyProduct.exe" Name="MYPROD_1.EXE" src="c:\MyProductSourceFolder\MyProduct.exe" > 
<Shortcut Id="MyProduct.Shortcut" Directory="MyProductShortcutDir" Name="MPSCUT" LongName="My Product Shortcut" /> 
</File> 
17

W Package element, dodaj atrybut InstallScope w ten sposób:

InstallScope='perMachine' 
+0

Kiedy to zrobisz, nie musisz się martwić o własność ALLUSERS. Ustawienie InstallScope na "perMachine" automatycznie ustawia ALLUSERS na 1. – RaceRalph

0

Prosty zdefiniuj ALLUSERS = 1, aby wymusić instalację na maszynie .

<Property Id="ALLUSERS"><![CDATA[1]]></Property> 
+2

Powinieneś użyć InstallScope = 'perMachine' zamiast –

+0

Czy to nie wystarczy tak ustawić właściwość ALLUSERS? Przynajmniej to jest wskazane w dokumentacji. – saschabeaumont

9

podstawie SampleFirst.wxs w WIX Tutorial http://www.tramontana.co.hu/wix/lesson1.php były dwie części, które zostały zmienione.

Najpierw dodaj właściwość ALLUERS = 1 "". To instaluje skrót do profilu wszystkich użytkowników, jak zauważyli inni.

Po drugie, zmień katalog główny dla wartości rejestru dla komponentu "ProgramMenuDir" na HKMU. Instalator podejmie decyzję, czy powinien używać HKLM (Komputer lokalny) lub HKCU (Bieżący użytkownik) w czasie instalacji, na podstawie właściwości ALLUSERS.

Powinieneś wtedy móc dodawać dialogi, aby zmodyfikować właściwość ALLUSERS, zmieniając odpowiednio katalog główny rejestru.

<?xml version="1.0" encoding="utf-8"?> 
<!-- Original Source available at "http://www.tramontana.co.hu/wix/download.php?file=samples/samplefirst.zip&type=application/zip" 
    This version has been modified for a local machine install (all users) vs a user install--> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Name="Foobar 1.0" Id="YOURGUID-CD32-4B20-BB4F-58A5C3B21A7C" UpgradeCode="YOURGUID-EDCE-42A2-9DA2-59FB08AC4FA6" Language="1033" Codepage="1252" Version="1.0.0" Manufacturer="Acme Ltd."> 
     <Package Id="*" Keywords="Installer" Description="Acme's Foobar 1.0 Installer" Comments="Foobar is a registered trademark of Acme Ltd." Manufacturer="Acme Ltd." InstallerVersion="100" Languages="1033" Compressed="yes" SummaryCodepage="1252" /> 
     <Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1" /> 
     <Property Id="DiskPrompt" Value="Acme's Foobar 1.0 Installation [1]" /> 
     <Property Id="ALLUSERS" Value="1" /> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder" Name="PFiles"> 
       <Directory Id="Acme" Name="Acme"> 
        <Directory Id="INSTALLDIR" Name="Foobar 1.0"> 
         <Component Id="MainExecutable" Guid="YOURGUID-2191-4A98-806B-2554B0DD8FC3"> 
          <File Id="FoobarEXE" Name="FoobarAppl10.exe" DiskId="1" Source="FoobarAppl10.exe" KeyPath="yes"> 
           <Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
           <Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
          </File> 
         </Component> 
         <Component Id="HelperLibrary" Guid="YOURGUID-7BA7-4BD1-90B9-C0DFC21674B1"> 
          <File Id="HelperDLL" Name="Helper.dll" DiskId="1" Source="Helper.dll" KeyPath="yes" /> 
         </Component> 
         <Component Id="Manual" Guid="YOURGUID-F60A-48D6-83FD-44ED01AA579A"> 
          <File Id="Manual" Name="Manual.pdf" DiskId="1" Source="Manual.pdf" KeyPath="yes"> 
           <Shortcut Id="startmenuManual" Directory="ProgramMenuDir" Name="Instruction Manual" Advertise="yes" /> 
          </File> 
         </Component> 
        </Directory> 
       </Directory> 
      </Directory> 
      <Directory Id="ProgramMenuFolder" Name="Programs"> 
       <Directory Id="ProgramMenuDir" Name="Foobar 1.0"> 
        <Component Id="ProgramMenuDir" Guid="YOURGUID-2D4F-443F-9ADA-563DB3C1581F"> 
         <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> 
         <RegistryValue Root="HKMU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" /> 
        </Component> 
       </Directory> 
      </Directory> 
      <Directory Id="DesktopFolder" Name="Desktop" /> 
     </Directory> 
     <Feature Id="Complete" Level="1"> 
      <ComponentRef Id="MainExecutable" /> 
      <ComponentRef Id="HelperLibrary" /> 
      <ComponentRef Id="Manual" /> 
      <ComponentRef Id="ProgramMenuDir" /> 
     </Feature> 
     <Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" /> 
     <UI /> 
    </Product> 
</Wix> 
+1

'HKMU' był podobno magicznym zaklęciem, którego potrzebowałem dzisiaj! –

1

Bob Arnson ma blog entry która zakrywa jak ustawić Użytkownika vs. Maszyna w Wix.
Szybką odpowiedzią jest ustawienie atrybutu InstallScope elementu Package na "perMachine".

Powiązane problemy