2013-02-22 30 views
6

मैं एक कस्टम यूजर इंटरफेस के साथ एक WPF सेटअप अनुप्रयोग बना रहा हूँ। मैं ब्रायन पी जॉनसन की ट्यूटोरियल के साथ शुरू किया: http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application/ मेरे विचार मेंवाईएक्स: प्रबंधित बूटस्ट्रैप में स्थापना निर्देशिका को कैसे एक्सेस/बदलें?

कहीं, मैं एक साधारण TextBox कि मेरे MainViewModel में एक संपत्ति InstallationPath को बांधता है।

अब मैं इस पथ का उपयोग करना चाहता हूं जब उपयोगकर्ता "इंस्टॉल" पर क्लिक करता है। इसके लिए, मेरे पास एक बटन है जो मेरे InstallCommand से जुड़ा हुआ है। निम्न विधि कहा जाता है (ट्यूटोरियल से सीधे लिया गया):

private void InstallExecute() 
{ 
    Bootstrapper.Engine.Plan(LaunchAction.Install); 
} 

मैं कैसे संकुल मेरी संपत्ति InstallationPath की निर्देशिका में स्थापित होने के लिए कर सकते हैं?


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

मैं एक ऐसी ही सवाल यहाँ Stackoverflow पर पाया:

Specify the INSTALLLOCATION of packages in WiX inside the Burn managed bootstrapper

जवाब बॉब Arnson से है

प्रत्येक के लिए एक MsiProperty बच्चे का प्रयोग करें MSIPackage INSTALLLOCATION = [BurnVariable] निर्दिष्ट करने के लिए। फिर BurnVariable सेट करने के लिए Engine.StringVariables का उपयोग करें।

अब, मैं मैं इस

private void InstallExecute() 
{ 
    Bootstrapper.Engine.StringVariables["BurnVariable"] = InstallationPath; 
    Bootstrapper.Engine.Plan(LaunchAction.Install); 
} 

लेकिन जहां इस चर को परिभाषित करने की तरह मेरे InstallExecute में StringVariables यहां पहुंच सकता है लगता है? मुझे लगता है कि कहीं भी product.wxs में?

+0

अरे माइकल, मैं इस एक ही ट्यूटोरियल का पालन किया है और मैं एक मुद्दा जहां प्रमुख उन्नयन के दौरान, पिछले exe के रूप में नया एक कंधे से कंधा मिलाकर स्थापित किया गया है हटाया नहीं जा रहा है का सामना करना पड़ रहा है। मैंने EXE संस्करण और शामिल एमएसआई संस्करण दोनों को बढ़ाया। मैंने कुछ अन्य लोगों को ट्यूटोरियल के नीचे एक ही मुद्दे पर टिप्पणी की। क्या आप इस मुद्दे में भाग गए थे? यदि ऐसा है तो आप इसे कैसे प्राप्त करते हैं? :(कुछ मदद आदमी की आवश्यकता है – mayooran

उत्तर

8

हाँ बस अपने जला bootstrapper में एक चर बनाने:

<Variable Name="BurnVariable" 
      bal:Overridable="yes" /> 

आप तो अपने बूट-तंगी MSI पैकेज के लिए एक पैरामीटर के रूप में इस पारित कर सकते हैं:

<MsiPackage SourceFile="$(var.YourMsiProject.Installer.TargetPath)" Compressed="no"> 
    <MsiProperty Name="INSTALLLOCATION" Value="[BurnVariable]" />   
</MsiPackage> 
+0

धन्यवाद! यही वही है जो मैं ढूंढ रहा था। :-) –

1

एक लापता संपत्ति "प्रकार" बंडल परिवर्तनीय तत्व पर। caverman_dick सही है लेकिन यह अतिरंजित नहीं होने पर ठीक से काम नहीं करता है। आप इसे भी कोशिश कर सकते हैं, टाइप = "स्ट्रिंग" सेटिंग।

Wix Variable Element

<Wix>...<Bundle>... 
    <Variable Name="MyApplicationMsiInstallFolder" Value="[WindowsVolume]MyApplication" 
      bal:Overridable="yes" Type="string"/> 
    <Chain> 
     <?if $(var.DbVersion) = false?> 
     <PackageGroupRef Id="AccessDatabaseGroup"/> 
     <RollbackBoundary /> 
     <?endif?> 
     <MsiPackage Id="MyApplicationMsiPackage" SourceFile="$(var.MyApplicationSetup.TargetPath)" DisplayInternalUI="no" 
           Vital="yes" > 
      <MsiProperty Name="APPLICATIONFOLDER" Value="[MyApplicationMsiInstallFolder]"/> 
     </MsiPackage> 
    </Chain> 
</Bundle></Wix>