Pergunta

Estou criando um arquivo msi instalador usando o kit de ferramentas XML Windows Installer. Ao instalar o arquivo MSI criado, um atalho colocado sob os resultados de pasta programMenuFolder em um atalho para somente o usuário Administrador. Como faço para deixar o instalador criar um atalho sob a usuários com perfil All, de modo que todos na máquina contém o atalho?

Foi útil?

Solução

O blog de Stuart Preston tem uma boa descrição de como fazer isso:

a instalação de um atalho para "todos os usuários" (via Wayback Machine)

Editar:

Os sinopse é a seguinte:

Em seu .wxs arquivo, incluem o seguinte:

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

Isto irá memorizar uma propriedade que imita o comportamento de seleção "Todos os usuários" em vez de "Just Me" para a sua instalação. Você vai precisa de uma estrutura de diretórios semelhante à seguinte também:

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

Finalmente, o atalho deve estar dentro de um elemento de "File", da seguinte forma:

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

Outras dicas

Na Package elemento , adicionar um atributo InstallScope assim:

InstallScope='perMachine'

Com base nos SampleFirst.wxs na WIX Tutorial http: //www.tramontana. co.hu/wix/lesson1.php havia duas partes que eu mudei.

Primeiro, adicione os ALLUERS propriedade = 1 "". Que instala o atalho para o perfil de todos os usuários como os outros.

Em segundo lugar, mudar a raiz para o valor do Registro para Componentes 'ProgramMenuDir' para HKMU. O instalador irá decidir se ele deve usar HKLM (máquina local) ou HKCU (usuário atual) no momento da instalação, com base na na propriedade ALLUSERS.

Você deve então ser capaz de acrescentar os diálogos para modificar a propriedade ALLUSERS, com a raiz do registro mudar em conformidade.

<?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 tem um blog de entrada que abrange a forma de jogo da máquina vs. usuário no Wix.
A resposta rápida é para definir atributo InstallScope do elemento Package para "perMachine".

simples definir ALLUSERS = 1 para forçar uma instalação por máquina.

  <Property Id="ALLUSERS"><![CDATA[1]]></Property>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top