2009-04-15 100 views
9

我使用Windows安裝程序XML工具包創建安裝程序msi文件。安裝創建的msi文件時,放置在ProgramMenuFolder文件夾下的快捷方式僅爲管理員用戶提供了一個快捷方式。如何讓安裝程序在「所有用戶」配置文件下創建快捷方式,以便機器上的每個人都擁有快捷方式?如何爲所有用戶安裝程序快捷方式?

回答

4

斯圖爾特普雷斯頓的博客對如何做一個很好的說明:

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

編輯:

Synopsys的是:

在你.wxs文件,包括以下內容:

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

這將預設一個屬性,模擬選擇 「所有用戶」而不是「Just Me」的行爲。你會 需要類似的目錄結構如下太:

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

最後,您的快捷方式應該是一個「文件」元素中,如下所示:

<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

Package element,添加一個像這樣的InstallScope屬性:

InstallScope='perMachine' 
+0

當你這樣做時,你不必擔心ALLUSERS屬性。將InstallScope設置爲'perMachine'會自動將ALLUSERS設置爲1. – RaceRalph 2016-08-12 14:19:33

0

簡單定義ALLUSERS = 1強制每機器安裝。

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

您應該使用InstallScope ='perMachine'而不是 – 2009-04-30 20:43:16

+0

這不就是設置ALLUSERS屬性嗎?至少這就是文件中指出的那樣.. – saschabeaumont 2009-05-01 00:28:50

9

根據在維克斯教程http://www.tramontana.co.hu/wix/lesson1.php的SampleFirst.wxs有兩個部分,我改變。

首先,添加屬性ALLUERS = 1「」。如其他人所指出的那樣,這將安裝所有用戶配置文件的快捷方式。

其次,將Component'ProgramMenuDir'的註冊表值的根目錄更改爲HKMU。安裝程序將根據ALLUSERS屬性決定在安裝時是應該使用HKLM(本地計算機)還是HKCU(當前用戶)。

然後,您應該能夠添加對話框來修改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> 
1

Bob Arnsonblog entry,討論瞭如何設置用戶對機器的維克斯。
快速的答案是將Package元素的InstallScope屬性設置爲「perMachine」。

相關問題