2013-07-26 9 views
8

Sto usando un WiX per installare un servizio su una macchina di prova. Ma quando lo faccio, solo l'utente che l'ha installato sulla macchina è in grado di vedere nell'opzione del pannello di controllo "Aggiungi/Rimuovi programmi". Ma voglio renderlo visibile per ogni utente sulla macchina.L'impostazione 'AllUsers' sull'installer Wix non funziona

Ho effettuato alcune ricerche e mi sono reso conto che non sto impostando la proprietà AllUSERS durante la creazione dell'installer nel file .wxs.

Così ho aggiornato il mio script con questa riga <Property Id="AllUSERS" Value="1"/> e ho creato il programma di installazione. Ma ancora solo l'utente che ha installato può vederlo nel Pannello di controllo.

Ecco il mio script per creare l'installazione.

<?xml version='1.0' encoding='windows-1252'?> 

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> 

<Product Name='Importer Service' Id='PUT-GUID-HERE' UpgradeCode='PUT-GUID-HERE' 
Language='1033' Codepage='1252' Version='$(var.version)' Manufacturer='Test'> 

<Package Id='*' Keywords='Installer' Description="Imports data" 
    Manufacturer='Test' InstallerVersion='100' Languages='1033' Compressed='yes' 
    SummaryCodepage='1252' /> 

<Media Id='1' Cabinet='ImporterWebService.cab' EmbedCab='yes' 
     DiskPrompt="CD-ROM #1" /> 
<Property Id='DiskPrompt' Value="Importer Web Service 1.0 Installation [1]" /> 

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> 
<Property Id="AllUSERS" Value="1"/> 

<Directory Id='TARGETDIR' Name='SourceDir'> 

    <Directory Id='ProgramFilesFolder' Name='PFiles'> 
    <Directory Id='Test' Name='Test1'> 
     <Directory Id='INSTALLDIR' Name='Importer Service'> 

     <Component Id='MainExecutable' Guid='*'> 
      <File Id='ImporterWindowsServiceEXE' 
       Name='Importer.WindowsService.exe' DiskId='1' 
       Source='Importer.WindowsService.exe' KeyPath='yes'> 
      </File> 

     <ServiceInstall 
      Id="ImporterServiceInstaller" 
      Type="ownProcess" 
      Vital="yes" 
      Name="Importer Service" 
      DisplayName="Importer Service" 
      Description="Imports data." 
      Start="demand" 
      Account="LocalSystem" 
      ErrorControl="ignore" 
      Interactive="no"> 
    </ServiceInstall> 

     <ServiceControl Id="StartService" Stop="both" Remove="uninstall" 
         Name="Importer Service" Wait="yes" /> 
     </Component> 

     <Component Id='FileHelpersLibrary' Guid='*'> 
      <File Id='FileHelpersDLL' Name='FileHelpers.dll' DiskId='1' 
       Source='FileHelpers.dll' KeyPath='yes' /> 
     </Component>   

     <Component Id='CodeSmithDataLibrary' Guid='*'> 
      <File Id='CodeSmithDataDLL' Name='CodeSmith.Data.dll' DiskId='1' 
       Source='CodeSmith.Data.dll' KeyPath='yes' /> 
     </Component>   

     </Directory> 
    </Directory> 
    </Directory> 

    <Directory Id="ProgramMenuFolder" Name="Programs"> 
    <Directory Id="ProgramMenuDir" Name="Importer Service"> 
     <Component Id="ProgramMenuDir" Guid="*"> 
     <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 
     <RegistryValue Root='HKCU' 
         Key='Software\[Manufacturer]\[ProductName]' 
         Type='string' Value='' KeyPath='yes' /> 
     </Component> 
    </Directory> 
    </Directory> 

    <Directory Id="DesktopFolder" Name="Desktop" /> 
</Directory> 

<Feature Id='Complete' Title='Importer Service' 
     Description='The complete package' 
     Display='hidden' Level='1' ConfigurableDirectory='INSTALLDIR'> 
    <ComponentRef Id='MainExecutable' /> 
    <ComponentRef Id='FileHelpersLibrary' /> 
    <ComponentRef Id='CodeSmithDataLibrary' />  
    <ComponentRef Id='ProgramMenuDir' />  
</Feature> 

<UIRef Id="WixUI_InstallDir" /> 
<UIRef Id="WixUI_ErrorProgressText" /> 


</Product> 
</Wix> 

Qualcuno potrebbe per favore guardare la sceneggiatura e farmi sapere cosa sto facendo male.

Grazie.

+0

WiX ha una lunga storia di rendere sempre più semplice la creazione di pacchetti di Windows Installer. Ci sono molti tutorial ed esempi su Internet ma spesso non tengono il passo con l'evoluzione di WiX. Puoi ancora imparare da loro ma assicurati di controllare la documentazione corrente (incluso lo schema XML, ad es. Tramite IntelliSense) ed eseguire lo strumento WiXCop in modo che il tuo lavoro sui nuovi programmi di installazione sia aggiornato. –

+0

Prova ALLUSERS anziché AllUSERS –

risposta

13

Invece di impostare in modo esplicito ALLUSERS, provare a impostare InstallScope dell'elemento Package su perMachine. Secondo la documentazione, questo fatto:

Impostare questo valore a dichiarare che il pacchetto è un un'installazione per computer e richiede privilegi elevati per l'installazione. Imposta la proprietà ALLUSERS su 1.

Quindi, dovrebbe fare il lavoro richiesto sotto il cofano.