का उपयोग करते समय मान को 0 पर सेट किया गया था जब रजिस्ट्री कुंजी अद्यतन नहीं हो रहा है रजिस्ट्री कुंजी मान को एमएसआई के लिए वाईएक्स टूलसेट द्वारा अपने इच्छित डेटा के साथ अपडेट नहीं किया जा रहा है। यदि के: वी गुम है, तो यह इसे जोड़ता है। यदि के: वी का डेटा 0 पर सेट हो गया है, तो यह पूरी तरह से अनदेखा करता है, जो यहां वास्तविक समस्या है (मुझे लगता है)वाईएक्स टूलसेट
मूल लक्ष्य यह रजिस्ट्री कुंजी मान सत्यापित करने से पहले इच्छित डेटा-मान के साथ मौजूद है, और रीबूट प्रॉम्प्ट ट्रिगर करता है अगर कुंजी को जोड़ा/अपडेट किया जाना था।
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Product Id="*" Name="SampleInstaller" Language="1033" Version="1.0.0.0" Manufacturer="ACME" UpgradeCode="cf6248e9-d7da-4996-9b8e-90072e8510f6">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<Feature Id="ProductFeature" Title="SampleInstaller" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder64">
<Directory Id="INSTALLFOLDER" Name="SampleInstaller" />
</Directory>
</Directory>
<Property Id="VKB_QUERY_HKCU" Secure="yes">
<RegistrySearch Id="VkbVisibleHkcu"
Win64="yes"
Type="raw"
Root="HKCU"
Key="Software\Microsoft\TabletTip\1.7"
Name="TipbandDesiredVisibility"/>
</Property>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ShowVKB_Registry_HKCU" Guid="{97AB4B1D-C9C8-4B34-9328-FF8CA3ED8992}" Directory="INSTALLFOLDER">
<RegistryKey Id="VKB_Registry_Key_HKCU" Root="HKCU" Key="Software\Microsoft\TabletTip\1.7" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="no">
<RegistryValue Id="VKB_Registry_Value_HKCU" Action="write" Type="integer" Name="TipbandDesiredVisibility" Value="1"/>
</RegistryKey>
</Component>
</ComponentGroup>
<InstallExecuteSequence>
<ScheduleReboot After="InstallFinalize">NOT (VKB_QUERY_HKCU = "#1")</ScheduleReboot>
</InstallExecuteSequence>
</Fragment>
</Wix>
इसके अलावा, यह MSIEXEC
से बाहर निकलने के कोड की तरह लगता है जब $LastExitCode
और %errorlevel%
जाँच हमेशा 0
बजाय 1641
की 3010
लौटा रहा है। मैंने अलग-अलग रीबूट व्यवहारों से गड़बड़ नहीं की है, लेकिन मैंने सोचा कि रीबूट प्रॉम्प्ट होने से मेरे इंस्टॉलर को शून्य से बाहर निकलने का कारण होगा, इसलिए किसी भी मार्गदर्शन की भी सराहना की जाती है।
आपको अपने '' में 'AllowSameVersionUpgrades = "yes" 'निर्दिष्ट करने की आवश्यकता है, यदि आप पुन: संकलन पर अपना संस्करण बदलने के बिना अपग्रेड का परीक्षण करने में सक्षम होना चाहते हैं। इसका उपयोग किए बिना अपग्रेड का परीक्षण करने के लिए आपको संस्करण के पहले 3 हिस्सों में से एक को बदलकर हर नए निर्माण के साथ संस्करण को अपग्रेड करना होगा क्योंकि विंडोज इंस्टालर संस्करण तुलना में चौथे भाग को अनदेखा करता है। –
आप पहले से मौजूद उत्पाद नहीं प्राप्त कर रहे थे क्योंकि आपने ' 'का उपयोग किया था जो निर्दिष्ट करता है कि प्रत्येक ** निर्माण ** आपको एक नया उत्पाद आईडी GUID मिलेगा और अन्य बिल्डों की तुलना में अनिवार्य रूप से अलग होगा बिल्कुल उसी स्रोत के साथ भी। मैं अत्यधिक वीएम पर इंस्टॉलेशन परीक्षण करने का सुझाव दूंगा जहां आप एक ज्ञात 'साफ' स्थिति में आसानी से रोल-बैक कर सकते हैं क्योंकि इंस्टॉलेशन विकसित करते समय आप वास्तव में गड़बड़ कर सकते हैं। –
अच्छा लगता है, @BrianSutherland! मैं निश्चित रूप से उन्हें वीएम पर परीक्षण करने के बारे में देखता हूं। यह मेरे लिए अजीब लगता है कि उत्पाद आईडी विजुअल स्टूडियो एक्सटेंशन के साथ पैक किए गए सेटअप टेम्पलेट्स के साथ उस तरह के व्यवहार के लिए डिफ़ॉल्ट होगी। क्या कोई कारण है कि इसे प्री-जेनरेट किए गए GUID पर लाभ क्यों माना जाता है? –