2009-04-15 12 views
9

मैं विंडोज इंस्टालर एक्सएमएल टूलकिट का उपयोग कर एक इंस्टॉलर एमएसआई फाइल बना रहा हूं। बनाई गई एमएसआई फ़ाइल को स्थापित करते समय, ProgramMenuFolder फ़ोल्डर के अंतर्गत एक शॉर्टकट केवल प्रशासक उपयोगकर्ता के लिए शॉर्टकट में परिणाम देता है। मैं इंस्टॉलर को सभी उपयोगकर्ता प्रोफ़ाइल के तहत शॉर्टकट कैसे बना सकता हूं, ताकि मशीन पर हर किसी के पास शॉर्टकट हो?सभी उपयोगकर्ताओं के लिए प्रोग्राम शॉर्टकट कैसे इंस्टॉल करें?

उत्तर

4

स्टुअर्ट प्रेस्टन के ब्लॉग ऐसा करने के तरीके का अच्छा वर्णन है:

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

संपादित करें:

synopsys है:

अपने .wxs फ़ाइल में, निम्नलिखित शामिल करें:

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

यह एक ऐसी संपत्ति प्रीसेट करेगा जो को आपके इंस्टॉलेशन के लिए "जस्ट मी" के बजाय "सभी उपयोगकर्ता" चुनने के व्यवहार की नकल करता है। इस प्रकार

<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 संपत्ति के बारे में चिंता करने की ज़रूरत नहीं है। इंस्टॉस्स्कोप को 'perMachine' पर सेट करना स्वचालित रूप से ALLUSERS को 1 पर सेट करता है। – RaceRalph

0

प्रति मशीन स्थापना को मजबूर करने के लिए सरल ALLUSERS = 1 को परिभाषित करें ।

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

आपको –

+0

के बजाय InstallScope = 'perMachine' का उपयोग करना चाहिए, क्या यह केवल अल्युमरर्स प्रॉपर्टी को सेट नहीं करता है? कम से कम यही है कि दस्तावेज में संकेत दिया गया है .. – saschabeaumont

9

WIX ट्यूटोरियल http://www.tramontana.co.hu/wix/lesson1.php में SampleFirst.wxs के आधार पर वहाँ दो भागों है कि मैं बदल रहे थे।

सबसे पहले, संपत्ति ALLUERS = 1 "" जोड़ें। यह उन सभी उपयोगकर्ताओं के प्रोफ़ाइल के शॉर्टकट को स्थापित करता है जैसा कि अन्य ने नोट किया है।

दूसरा, घटक 'प्रोग्राममेनूडीर' के लिए रजिस्ट्री मान के लिए रूट को 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

'एचकेएमयू' स्पष्ट रूप से जादू की जलन थी जो मुझे आज चाहिए! –

1

Bob Arnson एक blog entry कि Wix में उपयोगकर्ता बनाम मशीन स्थापित करने के लिए कैसे शामिल किया गया है।
त्वरित उत्तर पैकेज तत्व के इंस्टॉस्कोप विशेषता को "perMachine" पर सेट करना है।

संबंधित मुद्दे