क्षमा करें यदि यह मेरे स्वयं के प्रश्न का उत्तर देने के लिए बुरा शिष्टाचार है।
हाल ही में मैंने DISABLEADVTSHORTCUTS संपत्ति की जानकारी पर ठोकर खाई । मैंने विज्ञापित शॉर्टकट के साथ एक इंस्टाल बनाया और 1 के लिए DISABLEADVTSHORTCUTS प्रॉपर्टी सेट की, जिसने नॉन-एडवर्टाइजिंग शॉर्टकट तैयार किए। यह ICE43 त्रुटियों को दरकिनार कर देता है क्योंकि एक विज्ञापित शॉर्टकट एक फ़ाइल को कीपैथ के रूप में उपयोग कर सकता है। क्योंकि DISABLEADVTSHORTCUTS को Windows इंस्टालर सेट किया गया है, जो इन विज्ञापित शॉर्टकट को नियमित शॉर्टकट से बदल देगा।
मैंने पैकेज तत्व की InstallScope विशेषता को "perMachine" पर सेट किया है। यह ALLUSERS गुण को 1 पर सेट करता है। ProgramMenuFolder और DesktopFolder के मान तब सभी उपयोगकर्ता प्रोफ़ाइल पर हल होंगे।
ProgramMenuFolder के अंतर्गत बनाए गए फ़ोल्डर के लिए एक RemoveFolder और रजिस्ट्रीवाल्यू तत्व है। उदाहरण मैंने देखा है ( EX1 , ex2 ) उपयोग RegistryValue के लिए रूट के रूप में HKCU। मैंने इस रूट को HKMU में बदल दिया, जो ALLUSERS के मूल्य के आधार पर HKCU या HKLM को हल करता है।
संक्षेप में, DISABLEADVTSHORTCUTS के साथ 1 आपके विज्ञापित शॉर्टकट ICE त्रुटियों का उत्पादन नहीं करेगा, लेकिन स्थापित होने पर गैर-विज्ञापित शॉर्टकट में परिवर्तित हो जाएगा। मूल HKMU के साथ एक रजिस्ट्रीव्यू तब तक KeyPath के लिए ठीक है, जब तक कि यह गैर-विज्ञापित शॉर्टकट के लिए Keypath नहीं है।
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Name="Foobar 1.0" Id="YOURGUID-21F1-4026-ABD2-7CC7F8CE4D18" UpgradeCode="YOURGUID-AFA4-46C6-94AA-EEE3D104F903" 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" InstallScope="perMachine" />
<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="DISABLEADVTSHORTCUTS" 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-3E4F-47A2-86F1-F3162E9C4798">
<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-C7DA-4C02-A2F0-A6E089FC0CF3">
<File Id="HelperDLL" Name="Helper.dll" DiskId="1" Source="Helper.dll" KeyPath="yes" />
</Component>
<Component Id="Manual" Guid="YOURGUID-FF92-4BF4-A322-819A3B2265A0">
<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-D1C2-4D76-BA46-C6FA79862E77">
<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" />
</Product>
</Wix>