2012-03-08 13 views
13

मुझे स्थापित करने और अनइंस्टॉल करने से पहले, कस्टम सेटअप/आंसू के लिए निष्पादन योग्य चलाने की आवश्यकता है। इसे उन्नत विशेषाधिकारों के साथ चलाने की जरूरत है। यह सही तरीके से कैसे करें?उन्नत विशेषाधिकारों के साथ कस्टम निष्पादन योग्य कैसे चलाएं?

उत्तर

13

तो कर रही है पर सभी कस्टम क्रिया बाद में आप में मदद मिलेगी के प्रकार को देखने का सुझाव देते हैं, अंतिम समाधान की तरह था यह:

<CustomAction Id="Install" Directory="APPLICATIONROOTDIRECTORY" 
       Execute="deferred" Impersonate="no" Return="ignore" 
       ExeCommand="[APPLICATIONROOTDIRECTORY]MyExeName.exe -install" /> 

<CustomAction Id="Uninstall" Directory="APPLICATIONROOTDIRECTORY" 
       Execute="deferred" Impersonate="no" Return="ignore" 
       ExeCommand="[APPLICATIONROOTDIRECTORY]MyExeName.exe -uninstall" /> 

<InstallExecuteSequence> 

    <Custom Action='Install' After='InstallFiles' > 
    $ProductComponent = 3 
    </Custom> 

    <Custom Action='Uninstall' After='InstallInitialize' > 
    ?ProductComponent = 3 
    </Custom> 

</InstallExecuteSequence> 

इसे सुधारने के लिए कोई सलाह?

+0

ProductComponent क्या है ?? –

17

कैसे कस्टम क्रियाओं को प्रशासनिक विशेषाधिकार

एक अन्य link कि वास्तव में कस्टम क्रिया के सभी प्रकार बताते हैं की आवश्यकता होती है लेखक को अनुभाग में इस blog पर एक नज़र डालें। CustomAction विक्स में तत्व।

इससे आपको थोड़ा और मदद करनी चाहिए।

अपने समाधान को देखने के बाद आप लग रहे एक प्रकार 18 CustomAction कर रही करने के लिए, यहाँ मैं उन प्रकार के लिए पिछले ब्लॉग की सामग्री को चिपकाया:

कस्टम क्रिया प्रकार 18 एक निष्पादन जिसके साथ स्थापित किया गया है कॉल वर्तमान सत्र के दौरान आवेदन। कस्टमएक्शन तालिका में स्रोत कॉलम में फ़ाइल तालिका में रिकॉर्ड की कुंजी शामिल है।

कस्टमएक्शन तालिका में लक्ष्य कॉलम निष्पादन योग्य के लिए कमांड लाइन स्ट्रिंग शामिल है। सभी रिटर्न प्रोसेसिंग, निष्पादन शेड्यूलिंग, और इन-स्क्रिप्ट निष्पादन विकल्प लागू होते हैं।

If the source file is not already installed on the computer: 
    Custom action must be sequenced after CostFinalize action because only after this action path to the file can be resolved. 
If the source file is not already installed on the computer: 
    Deferred custom actions of this type must be sequenced after the InstallFiles action. 
    Non-deferred custom actions of this type must be sequenced after the InstallFinalize action. 

एंट्री कस्टम क्रिया को इंगित स्थापना सत्र के लिए संभाल प्राप्त करता है:

क्योंकि फ़ाइल आवेदन के साथ स्थापित किया गया है, वहाँ पर कस्टम क्रिया प्रकार 18 क्रमबद्ध प्रतिबंध नहीं है। स्थगित कस्टम कार्रवाई के निष्पादन के दौरान, सत्र अब मौजूद नहीं हो सकता है। गुणों का मूल्य प्राप्त करने के लिए CustomActionData प्रॉपर्टी का उपयोग करें।

यहाँ Wix में टाइप करें 18 कस्टम क्रिया को जोड़ने का तरीका है:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Component Id="Component1" 
      Guid="*"> 
    <File Id="MyCA" Name="MyCA.exe" /> 
    </Component> 
</Directory> 

<CustomAction Id="DoSomething" 
       FileKey="MyCA" 
       ExeCommand="-switch" 
       Execute="deferred" 
       Return="check" 
       HideTarget="no" 
       Impersonate="no" /> 

<InstallExecuteSequence> 
    <Custom Action="DoSomething" Before="InstallFinalize" /> 
</InstallExecuteSequence> 

सबसे पहले, हम फ़ाइल तालिका को MyCA.exe जोड़ें।

हम कस्टमएक्शन तालिका में टाइप 18 की एक कस्टम कार्रवाई भी जोड़ते हैं। FileKey विशेषता कस्टम क्रिया डीएल के साथ तत्व को इंगित करता है। ExeCommand विशेषता निष्पादन योग्य के लिए कमांड लाइन स्ट्रिंग निर्दिष्ट करती है।

आखिरी बात यह है कि सभी आवश्यक अनुक्रम तालिकाओं में हमारी कस्टम कार्रवाई को शेड्यूल करना है।

यह, तुम बाहर की मदद करनी चाहिए तरह क्या याद आ रही है, लेकिन मैं दृढ़ता से है कि आप जब अधिक संस्थापक

+0

यह यह काम कर रहा बनाने के लिए पर्याप्त नहीं है। सही अनुक्रम बिंदु में कस्टम कार्रवाई स्थापित करना और अपग्रेड परिदृश्य, मरम्मत इत्यादि से निपटने के लिए सही स्थितियों का उपयोग करना आवश्यक है :( – user626528

+0

लेकिन यह आपके प्रश्न का उत्तर देता है। यह सीए को ऊपर उठाने के तरीके के बारे में एक स्पष्ट दिशानिर्देश देता है, और आप स्वतंत्र हैं –

+2

@Yan Sklyarenko, यह नहीं है। यह वास्तविक उत्तर का 10% है। – user626528

5

आप & मरम्मत अनुक्रम स्थापित करने के लिए 'रिमूव' नहीं जोड़ सकते हैं। और 'इंस्टॉल और (रिमूव = "ऑल")' केवल अनइंस्टॉल अनुक्रम के लिए।

<InstallExecuteSequence> 
     <Custom Action='Install' After='InstallFiles' > 
     NOT REMOVE 
     </Custom> 

     <Custom Action='Uninstall' After='InstallFiles' > 
     Installed AND (REMOVE = "ALL") 
     </Custom> 

    </InstallExecuteSequence> 
0

आशा इस किसी Wix उपकरण सेट के साथ संघर्ष कर के लिए मददगार होगा टैग: CustomAction, InstallExecuteSequence, Wix स्थापना के बाद चलाने के लिए exe पूरा, Wix

भीतर बाइनरी या संसाधन फ़ाइल

हालांकि, कैसे ढूँढने में सक्षम नहीं Bootstrapper

फ़ाइल नाम से कर पाने: Product.wxs

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="TestingQtExec" Language="1033" Version="1.0.0.0" 
      Manufacturer="My Company" UpgradeCode="PUT-GUID-HERE"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <MediaTemplate EmbedCab="yes" /> 

    <Feature Id="ProductFeature" Title="TestingQtExec" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
    </Feature> 

    <Binary Id="WixCA1" 
       SourceFile="FTDI.exe"/> 

    <!-- install plugin --> 
    <CustomAction Id="FTDIInstall" 
       BinaryKey ="WixCA1" 
       ExeCommand="/passive" 
       Execute="commit" 
       Return="asyncNoWait" 
       HideTarget="no" 
       Impersonate="no" /> 


    <InstallExecuteSequence> 

     <Custom Action="FTDIInstall" Before="InstallFinalize" /> 
    </InstallExecuteSequence> 

       </Product> 

    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLFOLDER" Name="TestingQtExec" /> 
     </Directory> 
    </Directory> 
    </Fragment> 

    <Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <Component Id="cmpSampleTXT" Guid="*"> 
     <File Source="Sample.txt" /> 
     </Component> 
    </ComponentGroup> 
    </Fragment> 
</Wix> 
+0

क्या आप इस बारे में विस्तृत जानकारी दे सकते हैं कि यह मूल पोस्टर प्रश्न का उत्तर कैसे देता है? – Kmeixner

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