Frage

Ich erstelle eine Installer msi-Datei mit dem Windows Installer XML-Toolkit verwenden. Wenn die erstellte MSI-Datei installieren, eine Verknüpfung nur unter den ProgramMenuFolder Ordner führt zu einer Verknüpfung für den Administrator Benutzer platziert. Wie lasse ich das Installationsprogramm eine Verknüpfung unter dem erstellen Profil für alle Benutzer, so dass jeder auf der Maschine die Verknüpfung hat?

War es hilfreich?

Lösung

Stuart Preston Blog hat eine gute Beschreibung, wie dies zu tun:

eine Verknüpfung Installation für "All Users" (via Wayback Machine)

Edit:

Die Synopsys ist:

  

In Ihrer .wxs Datei, gehören die folgenden:

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

Das wird eine Eigenschaft voreingestellt, die das Verhalten des Auswählens nachahmt   die "All Users" und nicht als "Just Me" für die Installation. Du wirst   benötigt eine Verzeichnisstruktur wie die folgende zu:

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

Schließlich Ihre Verknüpfung innerhalb einer "Datei" Element sein sollte, wie folgt:

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

Andere Tipps

Package Element , ein InstallScope Attribut wie folgt hinzu:

InstallScope='perMachine'

Auf der Grundlage der SampleFirst.wxs im WIX Tutorial http: //www.tramontana. co.hu/wix/lesson1.php gab es zwei Teile, die ich geändert.

Fügen Sie zunächst die Eigenschaft ALLUERS = 1 "". Das installiert die Verknüpfung zu der alle Benutzer-Profile als andere angemerkt haben.

Zweitens, die Wurzel für den Registrierungswert für ‚ProgramMenuDir‘ Komponente ändern HKMU. Das Installationsprogramm wird entscheiden, ob es HKLM (Local Machine) oder HKCU (Current User) zum Zeitpunkt der Installation, auf der Grundlage die auf der Eigenschaft ALLUSERS verwenden sollte.

Sie sollten dann in der Lage sein, Dialoge hinzufügen, um die ALLUSERS Eigenschaft zu ändern, mit dem Registrierungsstamm entsprechend zu ändern.

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

Bob Arnson hat eine Blogeintrag , die beschreibt, wie User vs. Maschine in Wix setzen.
Die schnelle Antwort ist das Paket Element InstallScope gesetzt Attribut „perMachine“.

Einfache definieren ALLUSERS = 1 zu zwingen, eine pro-Maschine-Installation.

  <Property Id="ALLUSERS"><![CDATA[1]]></Property>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top