কীভাবে ওয়াইএক্স ইনস্টলার আপগ্রেড বাস্তবায়ন করবেন?


233

কর্মক্ষেত্রে আমরা ইনস্টলেশন প্যাকেজগুলি বিল্ডিংয়ের জন্য ওয়াক্স ব্যবহার করি । আমরা চাই যে পণ্য এক্স ইনস্টলের ফলে সেই মেশিনে সেই পণ্যটির পূর্ববর্তী সংস্করণটি আনইনস্টল হবে।

আমি একটি বড় আপগ্রেড সম্পর্কে ইন্টারনেটে বেশ কয়েকটি জায়গায় পড়েছি তবে এটি কাজ করতে পারেনি। WiX এ পূর্ববর্তী সংস্করণ বৈশিষ্ট্যটি আনইনস্টল করার জন্য আমার যে সঠিক পদক্ষেপগুলি গ্রহণ করা উচিত তা দয়া করে নির্দিষ্ট করে দিতে পারেন?

উত্তর:


189

সর্বশেষতম সংস্করণগুলিতে (3.5.1315.0 বিটা থেকে), আপনি নিজের ব্যবহারের পরিবর্তে মেজর আপগ্রেড উপাদানটি ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, আমরা স্বয়ংক্রিয়ভাবে আপগ্রেড করতে এই কোডটি ব্যবহার করি। এটি ডাউনগ্রেডগুলি প্রতিরোধ করে, স্থানীয়ীকৃত ত্রুটি বার্তা প্রদান করে এবং ইতিমধ্যে বিদ্যমান অভিন্ন সংস্করণটিকে উন্নত করতে বাধা দেয় (যেমন কেবলমাত্র নিম্ন সংস্করণগুলি আপগ্রেড করা হয়):

<MajorUpgrade
    AllowDowngrades="no" DowngradeErrorMessage="!(loc.NewerVersionInstalled)"
    AllowSameVersionUpgrades="no"
    />

8
এ সম্পর্কে বব আরনসনের ব্লগ পোস্টটি অনেক সুন্দর তথ্য সরবরাহ করে।
ডেভ অ্যান্ডারসন

17
দ্রষ্টব্য: কোথাও নথিভুক্ত নয়, তবে " <MajorUpgrade>" উপাদান অবশ্যই পরে রাখা উচিত <Package>। অন্যথায়, candleনিম্নলিখিত ত্রুটিটি দেয়: "ত্রুটি CNDL0107: লাইন 1, কলাম 473 এ নিম্নলিখিত ত্রুটিটি দিয়ে স্কিমা বৈধতা ব্যর্থ হয়েছে: নামপথের ' প্রকল্প ' নামক স্কিমাস.মাইক্রোসফট / উইকস / ২০০6 / উই'টিতে অবৈধ শিশু উপাদান রয়েছে ' মেজরআপগ্রেড 'নেমস্পেসে' স্কিমাস.মাফিক মাইক্রোসফট / উইকস / ২০০6 / উইুই । সম্ভাব্য উপাদানগুলির প্রত্যাশা: 'প্যাকেজ' "
রব ডাব্লু

21
+1 এই উত্তরটিকে যথাসম্ভব অনেকগুলি আপোস নেওয়া দরকার; এটি একটি উত্তরের সাথে যেতে খুব লোভনীয় যেটিতে 5x upvotes রয়েছে তবে এটি পুরানো পদ্ধতির ব্যবহার করে।
লিন ক্র্যাম্বলিং

1
ভাল যুক্তি. আমি একটি উদাহরণ যুক্ত করেছি যাতে লোকেরা এটিকে এড়াতে পারে না কারণ এটির একটি নেই!
এন্টি

6
কেবল আপনাকে নির্দিষ্ট করতে AllowDowngradesবা প্রয়োজন হবে তা উল্লেখ করতে চাই AllowSameVersionUpgrades। তারা ইতিমধ্যে কোন ডিফল্ট।
উজ্জ্বল

221

অবশেষে আমি একটি সমাধান খুঁজে পেয়েছি - আমি অন্যান্য লোকদের জন্য এখানে পোস্ট করছি যাদের একই সমস্যা হতে পারে (আপনারা সবাই 5):

  • * পণ্য আইডি পরিবর্তন করুন
  • পণ্য অধীনে নিম্নলিখিত যুক্ত করুন:

    <Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
    <Upgrade Id="YOUR_GUID">  
       <UpgradeVersion
          Minimum="1.0.0.0" Maximum="99.0.0.0"
          Property="PREVIOUSVERSIONSINSTALLED"
          IncludeMinimum="yes" IncludeMaximum="no" />
    </Upgrade> 
  • ইনস্টলএকসেকিউটসেক্সেন্সের অধীনে যুক্ত করুন:

    <RemoveExistingProducts Before="InstallInitialize" /> 

এখন থেকে আমি যখনই পণ্যটি ইনস্টল করি এটি পূর্ববর্তী ইনস্টল করা সংস্করণগুলি সরিয়ে দেয়।

দ্রষ্টব্য: আপগ্রেড আইডিটি আপনার নিজের জিইউডি দিয়ে প্রতিস্থাপন করুন


153
হ্যাঁ, ওয়াইএক্স শেখা এমন একটি অস্পষ্ট প্রবণতাগুলি বোঝার চেষ্টা করার মতো যে কেউ একটি সাধারণ ক্রিয়া সম্পাদনের জন্য 'বুদ্ধিমান' সিদ্ধান্ত নিয়েছিল। ইউনিক্সের মতো
এমএমআর

6
এছাড়াও, "পণ্যের আইডিকে * * পরিবর্তন করুন" ঠিক কী করে? এটি কি প্রতিবার নতুন পণ্য আইডি তৈরি করে? আপনার পণ্যটির কোনও স্থির আইডির আর কোনও পরিণতি নেই? - ওভারকিলের মতো শোনাচ্ছে।
অ্যান্টনি

10
@ অ্যান্টনি, @ ডারার হেল্পার: আমি নিশ্চিত যে আপনি এখানে একটি নতুন জিইউডি তৈরি করতে "*" ব্যবহার করবেন না। জিইউইডের অভ্যন্তরে (আপগ্রেড আইডি = "") কঠোর কোডিং এবং স্থির হওয়া উচিত এবং এটি আপনার (পণ্য আপগ্রেডকোড = "") বৈশিষ্ট্যে জিইউডিটির সাথে মেলে।
জোনাথন হার্টলি

37
আমি মনে করি আপনার প্রকৃত জিইউডি না থাকার জন্য সম্ভবত আপনার উদাহরণটি এখানে সম্পাদনা করা উচিত। আমি নিশ্চিত যে লোকেরা এটিকে অনুলিপি করবে এবং তা ভারব্যাটিম ব্যবহার করবে। হতে পারে "আপনার পণ্যটির ব্যবহার-আপগ্রেডেকোড-গাইড-হিয়ার"?
বাদামী

12
আপনার উদাহরণে বাগ রয়েছে। এমএসআই এর ProductVersionকেবল তিনটি সংস্করণ ক্ষেত্র সমর্থন করে; সুতরাং চতুর্থ ক্ষেত্রের তুলনা করা হবে না মোটেই। VersionMin এবং VersionMax অধীনে নোট দেখুন msdn.microsoft.com/en-us/library/aa372379(VS.85).aspx
শ্রীধর Ratnakumar

89

নীচে আমি বড় আপগ্রেডের জন্য ব্যবহার করি সিনট্যাক্সের ধরণের:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)">
 <Upgrade Id="PUT-GUID-HERE">
    <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
    <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
</Upgrade>

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

@ ব্রায়ান গিলস্পি যেমন উল্লেখ করেছেন যে কাঙ্ক্ষিত অপ্টিমাইজেশনের উপর নির্ভর করে সরানোএক্সেস্টিং প্রডাক্টগুলি নির্ধারিত করার জন্য অন্যান্য জায়গাগুলি রয়েছে। নোট করুন পুট-গাইড-এখানে অবশ্যই অভিন্ন হতে হবে।


2
আমি এখানে উইক্সের নিক র্যামিরিজ বইয়ের "আপগ্রেডিং এবং প্যাচিং" বিভাগটি পড়ছি এবং তিনি বলেছেন যে আপনি যদি ইনস্টলইনটিয়ালাইজ করার পরে সরানএক্সেস্টিং প্রডাক্টসগুলি নির্ধারণ করেন তবে আপনারও শিডিউল করতে হবে <InstallExecute After="RemoveExistingProducts" />। আপনার উদাহরণটিতে এটি নেই - এর অর্থ কি বইটি ভুল?
উইম কয়েনেন

3
আমি স্পষ্টভাবে ইনস্টলএক্সেকুটের সময়সূচী করি না।
রব মেনসিং

1
আমি না। ওয়াইএক্স ভি ৩..6-তে, বার্ন সামান্য আপগ্রেডগুলি কার্যকর করা সহজ করে দেয় তবে বার্ন ছাড়াই এটি ব্যবহারকারীর কাছ থেকে ম্যানুয়াল ইন্টারঅ্যাকশন প্রয়োজন (কমান্ড-লাইন বিকল্পগুলি সরবরাহ করতে হবে) যা মাইনর আপগ্রেডগুলি মূলত অকেজো করে তোলে। :)
রব মেনশিং

1
@ রবমেনসিং: আপনি কীভাবে নতুন সংস্করণে পুরানো সংস্করণ স্থাপন করবেন? আপনার উত্তরটি আমার পক্ষে কাজ করে (একমাত্র "প্রধান আপগ্রেড" উদাহরণ যা আমি ওয়াইএক্স ভি 3.5.2519.0 দিয়ে মোটামুটি সংকলন করতে পারি) তবে এটি একটি পুরানো সংস্করণ ইনস্টল করা সম্ভব (তার পরে, "উভয় সংস্করণ" অ্যাড / প্রোগ্রামগুলি সরান ")।
খ্রিস্টান স্পেচট

4
ঠিক আছে, আমি শুধু পাওয়া MajorUpgrade উপাদান মধ্যে এই উত্তর অবলম্বন দিতে আমি ঠিক কি আপনি চান প্রতিরোধ অধোগমন সহ।
খ্রিস্টান স্পেচট

40

পণ্যের উপাদানটির অভ্যন্তরে আপগ্রেড উপাদানটি যথাযথ ক্রিয়াকলাপের সাথে মিলিয়ে অ্যাকশনটি আপনার পরে আনইনস্টল সম্পাদন করবে। আপনি মুছে ফেলতে চান এমন সমস্ত পণ্যের আপগ্রেড কোডগুলি তালিকাভুক্ত করার বিষয়ে নিশ্চিত হন।

<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="00000000-0000-0000-0000-000000000000">
  <UpgradeVersion Minimum="1.0.0.0" Maximum="1.0.5.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>

মনে রাখবেন, আপনি যদি নিজের বিল্ডগুলি সম্পর্কে সতর্ক হন তবে আপনি লোককে দুর্ঘটনাক্রমে আপনার পণ্যের একটি নতুন সংস্করণ ইনস্টল করা থেকে বিরত রাখতে পারেন। সর্বোচ্চ ক্ষেত্রটি এটাই That's যখন আমরা ইনস্টলারগুলি তৈরি করি, তখন আমরা নির্মিত সংস্করণটির জন্য আপগ্রেড ভার্সন সর্বাধিক সেট করি তবে এই দৃশ্যটি রোধ করতে ইনক্লুডম্যাক্সিমামাম = "না" "

আপনার সরানএক্সিস্টিংপ্রডাক্টসের সময়সূচী সম্পর্কিত পছন্দগুলি রয়েছে। আমি এটিকে ইনস্টলফিনালাইজের পরে সময় নির্ধারণ করতে পছন্দ করি (অন্যরা যেমন প্রস্তাবিত হয় তেমন ইনস্টলইনটিয়ালাইজডের চেয়ে):

<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>

এটি নতুন ফাইল এবং রেজিস্ট্রি কী অনুলিপি করা না হওয়া অবধি পণ্যের পূর্ববর্তী সংস্করণটি ইনস্টল করে। এটি আমার পুরানো সংস্করণ থেকে নতুনটিতে ডেটা স্থানান্তর করতে দেয় (উদাহরণস্বরূপ, আপনি রেজিস্ট্রি থেকে কোনও এক্সএমএল ফাইলে ব্যবহারকারীর পছন্দসইগুলির সঞ্চয়স্থান স্যুইচ করেছেন, তবে আপনি বিনয়ী হতে এবং সেটিংগুলি মাইগ্রেট করতে চান)। এই মাইগ্রেশনটি ইনস্টলফাইনালাইজের ঠিক আগে মুলতুবি কাস্টম অ্যাকশনে করা হয়।

আরেকটি সুবিধা হ'ল দক্ষতা: যদি অপরিবর্তিত ফাইল থাকে তবে উইন্ডোজ ইনস্টলার ইনস্টলফিনালাইজের পরে সময় নির্ধারণের সময় সেগুলি আবার অনুলিপি করতে বিরক্ত করে না। আপনি যদি ইনস্টলইনটায়ালাইজ হওয়ার পরে নির্ধারিত হন তবে পূর্ববর্তী সংস্করণটি প্রথমে সম্পূর্ণভাবে মুছে ফেলা হবে, এবং তারপরে নতুন সংস্করণ ইনস্টল করা হবে। এর ফলে অপ্রয়োজনীয় মোছা এবং ফাইলগুলি পুনরায় তোলা হয়।

অন্যান্য সময়সূচী বিকল্পগুলির জন্য, এমএসডিএন-এ সরানএক্সেস্টিংপ্রডাক্টস সহায়তা বিষয় দেখুন। এই সপ্তাহে, লিঙ্কটি হ'ল: http://msdn.microsoft.com/en-us/library/aa371197.aspx


2
@ ব্রায়ান গিলেস্পি: "... যদি অপরিবর্তিত ফাইল থাকে ..." মানে কী? উইন্ডোজ ইন্সটলারের কোন ফাইল, এসেম্বলি ভার্সন, এসেম্বলি ফাইল ফাইল, ফাইলের আকার, ... কখন প্রতিস্থাপন করবেন তা নির্ধারণ করার মানদণ্ডটি কী?
দন্ততাল্লী

2
@ ডনটেল্লিয়া +1 এটি শক্তভাবে শিখেছে। RemoveExistingProductsপরে নির্ধারিত ছিল InstallFinalizeএবং অ্যাসেম্বলি ভার্সন অপরিবর্তিত থাকায় ডেলগুলি আপডেট করা হচ্ছিল না তবে এসেম্বলিপ্রডাক্টের মতো অন্যান্য ক্ষেত্রগুলি ছিল। আমি ফাইল তুলনা রুটিনের করুণায় থাকতে চাই না - আমি কেবল পূর্ববর্তী অ্যাপ্লিকেশনটি চাই
ওয়াল

16

আপনি ওয়াইএক্স-ব্যবহারকারীদের মেলিং তালিকায় এটি আরও ভালভাবে জিজ্ঞাসা করতে পারেন

উইন্ডোজ ইনস্টলার কী করছে তার দৃ understanding় বোঝার সাথে ওয়াইএক্স সর্বোত্তমভাবে ব্যবহৃত হয়। আপনি " উইন্ডোজ ইনস্টলারটির সংজ্ঞা নির্দেশিকা " পেতে বিবেচনা করতে পারেন

যে ক্রিয়াটি বিদ্যমান পণ্যটিকে সরিয়ে দেয় তা হ'ল সরানএক্সেস্টিংপ্রডাক্টস অ্যাকশন । কারণ এটি যা করে তার ফলাফল কোথায় নির্ধারিত হয় তার উপর নির্ভর করে - যথা, কোনও ব্যর্থতার কারণে পুরানো পণ্যটি পুনরায় ইনস্টল করা হবে কিনা এবং অপরিবর্তিত ফাইলগুলি আবার অনুলিপি করা হয়েছে কিনা - আপনাকে এটি নিজেই নির্ধারণ করতে হবে।

RemoveExistingProductsসিস্টেমের সমস্ত ইনস্টলড পণ্যের ( উপাদানটিতে নির্দিষ্ট ) বৈশিষ্ট্যের সাথে <Upgrade>মিল রেখে বর্তমান ইনস্টলেশনটিতে উপাদানগুলি প্রক্রিয়া করে । সম্পর্কিত পণ্য একটি পরিবার সংজ্ঞায়িত করে। এই আপগ্রেডকোড রয়েছে এমন কোনও পণ্য, যার সংস্করণগুলি নির্দিষ্ট রেঞ্জের মধ্যে পড়ে এবং যেখানে বৈশিষ্ট্যটি রয়েছে@IdUpgradeCode<Product>UpgradeCodeUpgradeVersion/@OnlyDetectno (বা বাদ দেওয়া হয়) সরিয়ে ফেলা হবে।

সম্পত্তি RemoveExistingProductsসেট করার জন্য ডকুমেন্টেশন উল্লেখ করে UPGRADINGPRODUCTCODE। এর অর্থ হ'ল পণ্যটি অপসারণের জন্য আনইনস্টল প্রক্রিয়াটি সেই সম্পত্তিটি অর্জন করে, যার মানProduct/@Id সেই পণ্যটি ইনস্টল হওয়ার জন্য।

যদি আপনার মূল ইনস্টলেশনটি অন্তর্ভুক্ত UpgradeCodeনা করে থাকে তবে আপনি এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।


21
নিঃসন্দেহে মাইক ঠিক কী বিষয়ে কথা বলছেন তা তিনি জানেন, সমস্ত শ্রদ্ধার সাথে, তবে উইন্ডোজ ইনস্টলার কী করছে তার দৃ understanding় বোঝার সাথে আমার মনকে বিশৃঙ্খলা করার বিষয়ে ভাবতে ভাবতে আমি হতাশার সাথে দীর্ঘশ্বাস ফেলেছি। আমি এটি জানার আগে, আমি রিভা-রোডের বাইরে গডাফুল টেক সেন্টার শহরগুলিতে, আমার টিপিএস রিপোর্টগুলি পূরণ করে এবং কেন জীবন এত শূন্য বলে মনে হচ্ছে তা ভাবছি এন্টারপ্রাইজ ক্লায়েন্টদের জন্য জাভা এবং .NET পরামর্শমূলক কাজগুলি করব। আমি মনে করি আমার পরবর্তী প্রকল্পটি এনএসআইএসের সাথে ইনস্টল হতে পারে, যা তার সমস্ত ত্রুটিগুলির জন্য, একটি প্রচলিত সমাবেশ-জাতীয় ভাষার মতো, এটি আমাকে উইন্ডোজ ইনস্টলার কী করছে তা বুঝতে দেয়নি।
জোনাথন হার্টলি

2
@ টার্টলি - ইনোসেটআপের সাথে যান, যা আপনাকে সমাবেশ-জাতীয় ভাষা সংরক্ষণ করবে :) নিশ্চিত করুন যে আপনিও ইস্তুলকে দখল করেছেন, এটি অনেক সাহায্য করে। এছাড়াও - একমত হয়েছিলেন যে সরল ইনস্টলগুলির জন্য এটি সমস্ত জটিল উপায়, তবে আমি মনে করি এসকিউএল সার্ভার ২০০৮ এর মতো কিছু ইনস্টল করার জন্য তাদের সত্যই এই জটিলতা প্রয়োজন ...
রোমান স্টারকভ

11

আমি ওয়াইএক্স আপগ্রেড সম্পর্কে প্রাথমিক বিষয়গুলি বুঝতে আমাকে সহায়তা করতে এই সাইটটি ব্যবহার করেছি:

http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization

এর পরে আমি একটি নমুনা ইনস্টলার তৈরি করেছি, (একটি পরীক্ষার ফাইল ইনস্টল করেছি), তারপরে আপগ্রেড ইনস্টলারটি তৈরি করেছি (2 টি নমুনা পরীক্ষার ফাইল ইনস্টল করা)। এটি আপনাকে কীভাবে প্রক্রিয়াটি কাজ করে তার একটি প্রাথমিক ধারণা দেবে।

এবং মাইক যেমনটি এপ্রেস থেকে বইটিতে বলেছিলেন, "উইন্ডোজ ইনস্টলারটির সংজ্ঞা", এটি আপনাকে বুঝতে সাহায্য করবে, তবে এটি ওয়াইএক্স ব্যবহার করে লেখা হয়নি।

আর একটি সাইট যা বেশ সহায়ক হয়েছিল তা হ'ল:

http://www.wixwiki.com/index.php?title=Main_Page


পৃষ্ঠার উদাহরণটি প্রত্যাশিত wix.tramontana.co.hu/tutorial/upgrades- এবং- modulariization/… হিসাবে কাজ করে না । আমি এটি দিয়ে খেলেছি। এমনকি ডাউনগ্রেড
হওয়াও

10

আমি ওয়াইএক্স ডকুমেন্টেশন পড়েছি, উদাহরণগুলি ডাউনলোড করেছি তবে এখনও আপগ্রেড নিয়ে আমার প্রচুর সমস্যা ছিল। গৌণ আপগ্রেডগুলি সেই আনইনস্টলটি নির্দিষ্ট করার সম্ভাবনা থাকা সত্ত্বেও পূর্ববর্তী পণ্যগুলির আনইনস্টল চালায় না। আমি তদন্তের জন্য একদিন বেশি ব্যয় করেছি এবং দেখতে পেয়েছি যে ওয়াইএক্স 3.5 3.5 আপগ্রেডের জন্য একটি নতুন ট্যাগ প্রবর্তন করেছে। এখানে ব্যবহার:

<MajorUpgrade Schedule="afterInstallInitialize"
        DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." 
        AllowDowngrades="no" />

তবে সমস্যার মূল কারণ হ'ল ডকুমেন্টেশনটি ছোট এবং ছোট আপগ্রেডের জন্য " REINSTALL = ALL REINSTALLMODE = vomus " পরামিতি ব্যবহার করতে বলেছিল, তবে এটি বলে না যে এই পরামিতিগুলি বড় আপগ্রেডগুলির জন্য ফরবিডডেন - তারা কেবল কাজ করা বন্ধ করে দেয়। সুতরাং আপনার বড় আপগ্রেড সহ এগুলি ব্যবহার করা উচিত নয়।


7

আমি অ্যালেক্স শেভুকের টিউটোরিয়ালটি একবার দেখে পরামর্শ দেব। তিনি Wix মাধ্যমে "প্রধান আপগ্রেড" সঙ্গে একটি ভাল হাতে-কলমে এ উদাহরণস্বরূপ ব্যাখ্যা মেজর আপগ্রেড - এমএসআই থেকে Wix, পার্ট 8


এই নিবন্ধটির লিঙ্কের জন্য ধন্যবাদ ... এটি দুর্দান্ত!
রবার্ট পি

7

টিউটোরিয়ালগুলি থেকে একটি গুরুত্বপূর্ণ জিনিসটি আমি কিছু সময়ের জন্য মিস করেছি ( http://www.tramontana.co.hu/wix/lesson4.php থেকে চুরি হয়ে গেছে ) ) যার ফলে "এই পণ্যটির অন্য সংস্করণ ইতিমধ্যে ইনস্টল করা হয়েছে" ত্রুটিগুলি:

* ছোট আপডেটের অর্থ এমন এক বা কয়েকটি ফাইলে ছোট পরিবর্তন হওয়া যেখানে পরিবর্তনটি পণ্যের সংস্করণ (মেজর.মিনোর.বিল্ড) পরিবর্তনের ওয়ারেন্ট দেয় না। আপনাকে কোনওভাবে পণ্য GID পরিবর্তন করতে হবে না। মনে রাখবেন যে আপনি যখন নতুন .msi ফাইল তৈরি করেন তখন আপনাকে সর্বদা প্যাকেজ জিইউডি পরিবর্তন করতে হবে যা পূর্বের ফাইলগুলির চেয়ে কোনও ক্ষেত্রে আলাদা। ইনস্টলারটি আপনার ইনস্টল করা প্রোগ্রামগুলির উপর নজর রাখে এবং ব্যবহারকারী যখন এই জিইউআইডি ব্যবহার করে ইনস্টলেশনটি পরিবর্তন করতে বা মুছতে চায় তখন সেগুলি খুঁজে পায়। বিভিন্ন প্যাকেজগুলির জন্য একই জিইউডি ব্যবহার করা ইনস্টলারকে বিভ্রান্ত করবে।

গৌণ আপগ্রেডগুলি এমন পরিবর্তনগুলি বোঝায় যেখানে পণ্য সংস্করণ ইতিমধ্যে পরিবর্তিত হবে। পণ্য ট্যাগটির সংস্করণ বৈশিষ্ট্যটি সংশোধন করুন। পণ্যটি একই থাকবে, সুতরাং আপনার পণ্য GID পরিবর্তন করার দরকার নেই তবে অবশ্যই একটি নতুন প্যাকেজ জিইউইডি পাবেন।

প্রধান আপগ্রেডগুলি একটি সম্পূর্ণ সংস্করণ থেকে অন্য সংস্করণে যাওয়ার মতো উল্লেখযোগ্য পরিবর্তনগুলি বোঝায়। সবকিছু পরিবর্তন করুন: সংস্করণ বৈশিষ্ট্য, পণ্য এবং প্যাকেজ জিইউইডিগুলি।


3
প্যাকেজ: আইডির ধরণ: অটজেনগুইড বিবরণ: কোনও পণ্য বা মার্জ মডিউলের জন্য প্যাকেজ কোড জিইউইডি। কোনও পণ্য সংকলন করার সময়, প্রতিটি বিল্ডের জন্য প্যাকেজ কোড তৈরি করার অনুমতি দেওয়ার জন্য এই বৈশিষ্ট্যটি সেট করা উচিত নয়। মার্জ মডিউলটি সংকলন করার সময়, এই বৈশিষ্ট্যটি অবশ্যই মডুলারাইজেশন গাইডের উপর সেট করতে হবে। ---- তো আমাদের প্যাকেজ আইডিতে মনোযোগ দেওয়ার দরকার নেই, তাই না?
কুপার.উইউ

আপনার লিঙ্কটি মারা গেছে
22500

5

আমি ওয়াইএক্স এর সর্বশেষতম সংস্করণ (3.0) ব্যবহার করছি এবং উপরের কাজটি পেতে পারি না। তবে এটি কাজ করেছে:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" ... >

<Upgrade Id="PUT-GUID-HERE">
  <UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND"
     Minimum="1.0.0.0"  IncludeMinimum="yes"
     Maximum="99.0.0.0" IncludeMaximum="no" />
</Upgrade>

নোট করুন যে পিট-গিউডি-হিয়ার হ'ল জিইউইডের মতো হওয়া উচিত যা আপনি পণ্যের আপগ্রেডকোড সম্পত্তিটিতে সংজ্ঞায়িত করেছেন।


2

নীচে আমার জন্য কাজ করেছেন।

<Product Id="*" Name="XXXInstaller" Language="1033" Version="1.0.0.0" 
    Manufacturer="XXXX" UpgradeCode="YOUR_GUID_HERE">
<Package InstallerVersion="xxx" Compressed="yes"/>
<Upgrade Id="YOUR_GUID_HERE">
    <UpgradeVersion Property="REMOVINGTHEOLDVERSION" Minimum="1.0.0.0" 
        RemoveFeatures="ALL" />
</Upgrade>
<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

অনুগ্রহ করে নিশ্চিত করুন যে পণ্যটিতে আপগ্রেডকোড আপগ্রেডে আইডির সাথে মিলছে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.