Как установить ярлыки программ для всех пользователей?

StackOverflow https://stackoverflow.com/questions/751000

Вопрос

Я создаю установочный msi-файл с помощью Windows Installer XML toolkit.При установке созданного msi-файла ярлык, размещенный в папке ProgramMenuFolder, создает ярлык только для пользователя-администратора.Как мне разрешить установщику создать ярлык в профиле "Все пользователи", чтобы ярлык был у всех на компьютере?

Это было полезно?

Решение

В блоге Стюарта Престона есть хорошее описание того, как это сделать:

Установка ярлыка для "Всех пользователей" (через Wayback Machine)

Редактировать:

Синопсис таков:

В ваш файл .wxs включите следующее:

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

При этом будет задано свойство, которое имитирует поведение при выборе "Все пользователи", а не "Только я" для вашей установки.Вы будете нужна структура каталогов похожа на слишком следующие :

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

Наконец, ваш ярлык должен находиться внутри элемента "File" следующим образом:

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

Другие советы

в Элемент пакета, добавьте атрибут InstallScope следующим образом:

InstallScope='perMachine'

На основе файла SampleFirst.wxs из руководства WIX. http://www.tramontana.co.hu/wix/lesson1.php Я изменил две части.

Сначала добавим свойство ALLUERS=1 "".Это устанавливает ярлык для профиля всех пользователей, как отмечали другие.

Во-вторых, измените корень значения реестра для компонента «ProgramMenuDir» на HKMU.Установщик решит, следует ли ему использовать HKLM (локальный компьютер) или HKCU (текущий пользователь) во время установки, на основе свойства ALLUSERS.

После этого вы сможете добавлять диалоговые окна для изменения свойства ALLUSERS с соответствующим изменением корня реестра.

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

Боб Арнсон имеет запись в блоге в котором рассказывается, как установить User vs.Машина в Wix.
Быстрый ответ — установить для атрибута InstallScope элемента Package значение «perMachine».

Просто определите ALLUSERS=1 для принудительной установки на каждую машину.

  <Property Id="ALLUSERS"><![CDATA[1]]></Property>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top