ভিজ্যুয়াল স্টুডিও 2012 এর জন্য ভিজুয়াল সি ++ পুনরায় বিতরণযোগ্য ইনস্টল করা আছে কীভাবে সনাক্ত করবেন?
আমি গুগল চেষ্টা করেছিলাম এবং কেউ এই প্রশ্ন জিজ্ঞাসা করেনি, অবাক!
ভিজ্যুয়াল স্টুডিও 2012 এর জন্য ভিজুয়াল সি ++ পুনরায় বিতরণযোগ্য ইনস্টল করা আছে কীভাবে সনাক্ত করবেন?
আমি গুগল চেষ্টা করেছিলাম এবং কেউ এই প্রশ্ন জিজ্ঞাসা করেনি, অবাক!
উত্তর:
এটি নির্ভর করে আপনি কোন সংস্করণটি ব্যবহার করছেন। এই দুটি 2012 কীগুলি আপডেট 4 এর জন্য ডাউনলোড করার জন্য তাদের সম্পর্কিত সংস্করণগুলির সাথে আমার পক্ষে ভাল কাজ করেছে Please দয়া করে সচেতন থাকুন যে এই রেগের কয়েকটি অবস্থান ওএস-নির্ভর হতে পারে। আমি একটি উইন্ডোজ 10 x64 বক্স থেকে এই তথ্যটি সংগ্রহ করেছি । আমি কেবল এগিয়ে যাব এবং ইনস্টলেশনগুলি সনাক্ত করার জন্য অনুসন্ধান করা এই সমস্ত পুনর্নির্মাণ সংস্করণগুলি এবং রেজি কীগুলি ডাম্প করব .:
Microsoft Visual C++ 2005 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1af2a8da7e60d0b429d7e6453b3d0182
Configuration: x64
Version: 6.0.2900.2180
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE
Microsoft Visual C++ 2005 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\c1c4f01781cc94c4c8fb1542c0981a2a
Configuration: x86
Version: 6.0.2900.2180
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161 (SP1)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\67D6ECF5CD5FBA732B8B22BAC8DE1B4D
Configuration: x64
Version: 9.0.30729.6161 (Actual $Version data in registry: 0x9007809 [DWORD])
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/2/d/6/2d61c766-107b-409d-8fba-c39e61ca08e8/vcredist_x64.exe
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161 (SP1)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\6E815EB96CCE9A53884E7857C57002F0
Configuration: x86
Version: 9.0.30729.6161 (Actual $Version data in registry: 0x9007809 [DWORD])
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe
Microsoft Visual C++ 2010 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1926E8D15D0BCE53481466615F760A7F
Configuration: x64
Version: 10.0.40219.325
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe
Microsoft Visual C++ 2010 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1D5E3C0FEDA1E123187686FED06E995A
Configuration: x86
Version: 10.0.40219.325
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe
Microsoft Visual C++ 2012 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{ca67548a-5ebe-413a-b50c-4b9ceb6d66c6}
Configuration: x64
Version: 11.0.61030.0
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
Microsoft Visual C++ 2012 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
Configuration: x86
Version: 11.0.61030.0
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe
সংস্করণ সতর্কীকরণ : প্রতি ব্যবহারকারী ওয়াই হা লি'র অনুসন্ধানে, "... উপাচার্য ++ 2012 আপডেট 4 ( 11.0.61030.0
) এর সাথে আসা বাইনারিগুলির 11.0.60610.1
এটিএল এবং এমএফসি বাইনারিগুলির জন্য সংস্করণ রয়েছে এবং 11.0.51106.1
অন্য সব কিছুর জন্য যেমন, এমএসভিসিপি 110.ডিএল এবং এমএসভিসিআর 1010.dll । .. "
Microsoft Visual C++ 2013 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{050d4fc8-5d48-4b8f-8972-47c82c46020f}
Configuration: x64
Version: 12.0.30501.0
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe
Microsoft Visual C++ 2013 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{f65db027-aff3-4070-886a-0d87064aabb1}
Configuration: x86
Version: 12.0.30501.0
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe
বিকল্প হিসাবে 2015-2019 বান্ডিল ব্যবহার বিবেচনা করুন
Microsoft Visual C++ 2015 Redistributable (x64) - 14.0.24215
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{d992c12e-cab2-426f-bde3-fb8c53950b0d}
Configuration: x64
Version: 14.0.24215.1
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe
Microsoft Visual C++ 2015 Redistributable (x86) - 14.0.24215
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{e2803110-78b3-4664-a479-3611a381656a}
Configuration: x86
Version: 14.0.24215.1
সরাসরি ডাউনলোডের ইউআরএল: https : //download.mic Microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x86.exe
বিকল্প হিসাবে 2015-2019 বান্ডিল ব্যবহার বিবেচনা করুন
ক্যাভেট : একটি নতুন 2017 রেজিস্ট্রি কনভেনশন ব্যবহৃত হচ্ছে, বা এটি এখনও চূড়ান্ত হয়নি। আমি যেমন উপরের সর্বাধিক কীগুলি অনুমান করছি:
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle]
এবং
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle]
পরিবর্তন সাপেক্ষে, বা কমপক্ষে বিভিন্ন নেস্টেড জিইউইডি রয়েছে, আমি একটি জিইউইডির সাথে শেষ হওয়া কীটি তালিকাটি ব্যবহার করতে যাচ্ছি।
Microsoft Visual C++ 2017 Redistributable (x64) - 14.16.27012
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle\Dependents\{427ada59-85e7-4bc8-b8d5-ebf59db60423}]
Configuration: x64
Version: 14.16.27012.6
সরাসরি ডাউনলোডের ইউআরএল: https : //download.visualstudio.mic Microsoft.com/download/pr/9fbed7c7-7012-4cc0-a0a3-a541f51981b5/e7eec15278b4473e26d7e32cef53a34c/vc_redist.x64.exe
Microsoft Visual C++ 2017 Redistributable (x86) - 14.16.27012
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle\Dependents\{67f67547-9693-4937-aa13-56e296bd40f6}]
Configuration: x86
Version: 14.16.27012.6
সরাসরি ডাউনলোড URL: https://download.visualstudio.microsoft.com/download/pr/d0b808a8-aa78-4250-8e54-49b8c23f7328/9c5e6532055786367ee61aafb3313c95/vc_redist.x86.exe
কেভিয়েট : ভিজ্যুয়াল সি ++ 2019 এর জন্য আরও একটি নতুন রেজিস্ট্রি কনভেনশন ব্যবহৃত হচ্ছে Vis এছাড়াও ভিজ্যুয়াল সি ++ 2019 এর জন্য একটি স্ট্যান্ডেলোন ইনস্টলার হিসাবে উপস্থিত হবে না, কেবলমাত্র এই বান্ডিল ইনস্টলারটি 2019 এর মাধ্যমে ভিজ্যুয়াল সি ++ 2015।
14.21.27702
Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.21.27702
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.21,bundle\Dependents\{f4220b74-9edd-4ded-bc8b-0342c1e164d8}]
Configuration: x64
Version: 14.21.27702
সরাসরি ডাউনলোড ইউআরএল: https://download.visualstudio.microsoft.com/download/pr/9e04d214-5a9d-4515-9960-3d71398d98c3/1e1e62ab57bbb4bf5199e8ce88f040be/vc_redist.x64.exe
Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.21.27702
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.21,bundle\Dependents\{49697869-be8e-427d-81a0-c334d1d14950}]
Configuration: x86
Version: 14.21.27702
সরাসরি ডাউনলোডের ইউআরএল: https://download.visualstudio.microsoft.com/download/pr/c8edbb87-c7ec-4500-a461-71e8912d25e9/99ba493d660597490cbb8b3211d2cae4/vc_redist.x86.exe
14.22.27821
Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.22.27821
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.22,bundle\Dependents\{5bfc1380-fd35-4b85-9715-7351535d077e}]
Configuration: x86
Version: 14.22.27821
সরাসরি ডাউনলোডের ইউআরএল: https : //download.visualstudio.mic Microsoft.com/download/pr/0c1cfec3-e028-4996-8bb7-0c751ba41e32/1abed1573f36075bfdfc538a2af00d37/vc_redist.x86.exe
Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.22.27821
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.22,bundle\Dependents\{6361b579-2795-4886-b2a8-53d5239b6452}]
Configuration: x64
Version: 14.22.27821
সরাসরি ডাউনলোড ইউআরএল: https://download.visualstudio.microsoft.com/download/pr/cc0046d4-e7b4-45a1-bd46-b1c079191224/9c4042a4c2e6d1f661f4c58cf4d129e9/vc_redist.x64.exe
চেঞ্জলগ :
আগস্ট 19, 2019 - 2015-2019 বান্ডিল সংস্করণটির নতুন সংস্করণ যুক্ত হয়েছে
জুন 13, 2019 - 2015-2019 বান্ডিল সংস্করণের জন্য একটি নতুন বিভাগ যুক্ত করেছে এবং এর ব্যবহার বিবেচনা করার বিষয়ে 2015 এবং 2017 বিভাগগুলিতে ছোট নোট14.21.27702
যুক্ত করেছে বিকল্প হিসাবে নতুন বান্ডিল।
ডিসেম্বর 14, 2018 - জিম ওল্ফের অনুসন্ধান অনুসারে সার্ভিস প্যাক 1 এর আপডেটের
জন্য MSVC2008 আপডেট হয়েছে 27 নভেম্বর, 2018 - এমএসভিসি ২০১7 বনাম
12 সেপ্টেম্বর, 2018 এর জন্য আপডেট হওয়া তথ্য -
আগস্ট 24 শে আগস্ট, ওয়াই হা লি'র অনুসন্ধান অনুসারে 2012 আপডেট 4-এ যোগ করা সংস্করণ 2018 - 14.15.26706 এর জন্য আপডেট হওয়া 2017 এর সংস্করণ, ভিএস 2017 15.8.1 এর সাথে প্যাকেজযুক্ত আপডেট ভিজ্যুয়াল সি ++ নির্ভরতা9.0.30729.6161
14.16
16 ই মে, 2018 - নতুন সি ++ 2017 এন্ট্রি হিসাবে 14.14.26405.0 এর জন্য আপডেট হওয়া 2017 এর সংস্করণ
8 ই সেপ্টেম্বর, 2017 - নতুন ভিজ্যুয়াল সি ++ 2017 এন্ট্রি হিসাবে 14.11.25325.0 এর জন্য
2017 এর সংস্করণ আপডেট হয়েছে - আপডেট হয়েছে 2017 এর 14.10 সংস্করণ .25008.0 নতুন ভিজ্যুয়াল সি ++ 2017 এন্ট্রি হিসাবে
অক্টোবর 24, 2016 - আপডেট হয়েছে 2015 এর সংস্করণ তথ্য 14.0.24215.1
আগস্ট 18, 2016 - আপডেট হয়েছে 2015 এর সংস্করণ তথ্য 14.0.24212
মে 27, 2016 - আপডেট হওয়া তথ্য এমএসভিসি2015 আপডেট 2
এর মধ্যে যদি কোনও পুরানো হয়ে যায় তবে দয়া করে এখানে আমার সাথে যোগাযোগ করুন।
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{$GUID}
এবং[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{$GUID}
[HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle] [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle]
চেষ্টা
HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
একটি সূচনা পয়েন্ট হিসাবে। আমি এটি ভিসি ++ 11 (ভিএস 2012) রানটাইম ইনস্টল করার জন্য চেক হিসাবে ব্যবহার করব।
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
এই রেজিস্ট্রি অবস্থানের Installed
মানটি আপনি যাচাই করতে পারেন 1
: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
-৪-বিট সিস্টেমে। কোডে যার ফলে রেজিস্ট্রি কী অ্যাক্সেস হতে পারে HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
। অনুপস্থিতি লক্ষ্য করুন Wow6432Node
।
একটি 32-বিট সিস্টেমে রেজিস্ট্রি ছাড়া একই হয় Wow6432Node
:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC
তবে আমার কাছে Runtimes
চাবি নেই। ডেভের উত্তরে আমার কী আছে HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
।
ভিজ্যুয়াল সি ++ সহ শিপিত বুটস্ট্র্যাপার প্যাকেজ ম্যানিফেস্টে কোনও ইনস্টল-চেক উপাদান নেই। অনুমান করুন মাইক্রোসফ্ট যদি আপনি পূর্বশর্ত হিসাবে সেট করে থাকেন তবে সর্বদা ইনস্টল করতে চান।
অবশ্যই আপনি এখনও এমসিআইকিউরিপ্রডাক্ট স্টেট কল করতে পারেন, ভিসি পুনর্নির্মাণ প্যাকেজটি এমএসআইয়ের মাধ্যমে ইনস্টল করা আছে কিনা তা পরীক্ষা করতে, প্যাকেজ কোডটি চালিয়ে পাওয়া যাবে
wmic product get
কমান্ড লাইনে, বা আপনি যদি ইতিমধ্যে ডাব্লুএমই থেকে থাকেন: মূল \ ক্লিপ, চালান
product where "Caption like '%C++ 2012%'"
এই সাধারণ প্রশ্নের উত্তর দুর্ভাগ্যক্রমে একটি সহজ নয়, তবে সমস্ত সিস্টেমে 100% এ কাজ করছে এবং এমনকী। নেট ফ্রেমওয়ার্কগুলিতেও প্রসারিত।
জটিলতাটি এই সত্য থেকে আসে যে অনেকগুলি ভিসি রানটাইম সংশোধন রয়েছে যা এর ফলে ঘটতে পারে যে ভিসি 10 রানটাইম ইনস্টল করা হলেও তাদের বিল্ড সংখ্যাটি সাম্প্রতিক ছিল না তাই আপনি যদি ইনস্টল না করেন তবে আপনার এক্সই শুরু হবে না আপনার যথাযথ রানটাইমগুলি বা নতুন রানটাইমগুলির মধ্যে একটি যা এটির সাথে চালানোর জন্য একই এবং পূর্ববর্তী সংস্করণগুলিকে সক্ষম করে (পাশাপাশি নরক)। এছাড়াও, আপনার যদি একটি 64 বিট EXE থাকে, আপনাকে 32 এবং 64 বিট রানটাইম উভয়ের জন্য পরীক্ষা করতে হবে।
এটি বলেছিল, আপনার EXE ইনস্টল করার জন্য রানটাইমগুলি ইনস্টল করা আছে কিনা তা নির্ধারণের একমাত্র নির্ভরযোগ্য উপায় হ'ল EXE চালানোর চেষ্টা করা - বা অন্য কোনও EXE যা আপনার মূল EXE এর মতোই সেটিংসের সাথে নির্মিত এবং যার একমাত্র উদ্দেশ্য - কোনও কিছুই নয়। কেবল চালান (যার অর্থ রানটাইম ইনস্টল করা আছে) বা রান করতে ব্যর্থ (যখন ইনস্টল করা হবে না)।
আমি একজন ইনস্টলারের জন্য নিম্নলিখিতটি করেছি যার জন্য ভিসি 10 32 এবং 64 বিট রানটাইম ইনস্টল করা দরকার: ইনস্টলার সমস্ত ডামি এক্সই চালু করার চেষ্টা করে এবং যদি এটি সফল হয় তবে সংশ্লিষ্ট রানটাইমটি ইনস্টলড বলে মনে করা হয়। এটি 32/64 বিট দৃশ্যের সমাধানও করে।
এটি, যাইহোক, সঠিক। নেট কাঠামো ইনস্টল করা আছে কিনা তা নির্ধারণ করতেও কাজ করে যা উইন্ডোজ 8 এবং 10-এ খুব জটিল, কারণ ডাউনলোডযোগ্য বিল্ট-ইন। নেট 3.5 সমর্থন। নেট সংস্করণ 3.0 এবং 2.0 সমর্থন করে - সেখানে এগুলির জন্য কোনও রেজিস্ট্রি এন্ট্রি নেই। (এবং আরও খারাপ, আপনি এখানে স্ট্যান্ডার্ড ফ্রেমওয়ার্ক ইনস্টলারগুলিও ব্যবহার করতে পারবেন না, আপনাকে অবশ্যই বিল্ট-ইন সমর্থনটি ব্যবহার করতে হবে এবং এটি উইন্ডোজের মাধ্যমে ডাউনলোড করতে হবে, বা আপনার অ্যাপ্লিকেশনটি। নেট 4 দিয়ে পুনর্নির্মাণ করতে হবে, তবে এটি অন্য গল্প)।
সি ++ ডামি এক্সই নিম্নোক্ত কোড (এবং যদি প্রয়োজন হয় একটি 64 বিট কনফিগারেশনে অন্য একটি) ব্যবহার করে একটি প্রকল্প ব্যবহার করে তৈরি করা যেতে পারে:
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
প্রকল্পের বৈশিষ্ট্যগুলি একটি ভাগ করা ডিএলএলে এমএফসি ব্যবহার করতে এমএফসি ব্যবহারের কথা মনে রাখবেন । এক্সিকিউটেবলগুলির আকার 4KB এর কাছাকাছি হবে - একটি নিশ্চিত ফলাফলের জন্য মূল্য দিতে একটি ছোট দাম।
আপনার ব্যবহারকারীদের একটি দুর্দান্ত ইনস্টলেশন অভিজ্ঞতা দিতে, আপনি নিম্নলিখিতগুলি করতে পারেন (নমুনা কোডটি এনএসআইএসের জন্য ):
Function TryLaunchApplication
Pop $1 ; pathname
nsExec::Exec $1
Pop $0
${If} $0 == "error"
${OrIf} $0 != 0
Push 0
${Else}
Push 1
${EndIf}
FunctionEnd
এবং এটি কোনও ফাংশনে কল করুন, যেমন চেকআরটাইমস
Function CheckRuntimes
; Try to execute VC++ 10 application (32 bit)
Push "Vc10RuntimeCheckerApp.exe"
Call TryLaunchApplication
Pop $Vc10RuntimesFound
; Add 64 bit check if required.
; Remember to try running the 64 bit EXE only on a 64 bit OS,
; which requires further checks.
; Try to execute .net application
Push "DotNetRuntimeCheckerApp.exe"
Call TryLaunchApplication
Pop $DotNetFrameworkFound
FunctionEnd
তারপরে রানটাইম চেক চালু করুন যেমন ওয়েলকাম পৃষ্ঠাটি ছেড়ে যাওয়ার সময় এবং ফলাফলটি ক্যাশে করে রাখুন, সুতরাং ব্যবহারকারী যখনই "পিছনে" এবং "পরবর্তী" বোতামে ক্লিক করবে তখন আপনাকে পুনরায় পরীক্ষা করতে হবে না।
এর পরে, ইনস্টল ট্রিটিতে একটি পঠনযোগ্য বিভাগ তৈরি করুন এবং উপাদান পৃষ্ঠাটি প্রদর্শিত হওয়ার আগে সম্পাদন করা একটি ফাংশনটিতে এটি প্রাক-নির্বাচন বা নির্বাচন নির্বাচন করুন ।
এটি নিশ্চিত করবে যে প্রতিটি অনুপস্থিত রানটাইম উপাদানগুলির ইনস্টলেশনটি বাধ্যতামূলক এবং এটি ইতিমধ্যে উপস্থিত থাকলে এড়িয়ে যায়।
যেহেতু ভিজ্যুয়াল স্টুডিও 2010 এবং পরে উইনএসএক্সএস ব্যবহার বন্ধ করে দিয়েছে, কেবল% উইন্ডির% \ system32 \ msvcr110.dll পরীক্ষা করা যথেষ্ট। আপনি যদি নতুন পর্যায়ে নতুন সংস্করণ যাচাই করতে চান তবে ফাইল সংস্করণটি 11.0.50727.1 (ভিএস2012 আরটিএম) বা 11.0.51106.1 (ভিএস2012 আপডেট 1) কিনা তা পরীক্ষা করতে পারেন।
11.0.61030.0
) এর সাথে আসা বাইনারিগুলির 11.0.60610.1
এটিএল এবং এমএফসি বাইনারিগুলির জন্য সংস্করণ রয়েছে এবং 11.0.51106.1
অন্য সব কিছুর জন্য যেমন, এমএসভিসিপি 110.ডিএল এবং এমএসভিসিআর 1010.dll। নিশ্চিত কেন। আপনি এটি নিশ্চিত করতে পারেন (উইন্ডোজ 10 মেশিনে আমি এটি পরীক্ষা করেছি) । ক্যাব ফাইলগুলিতে ফাইলগুলি পরীক্ষা করে C:\ProgramData\Package Cache\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}v11.0.61030\packages\vcRuntimeMinimum_x86
এবং C:\ProgramData\Package Cache\{B175520C-86A2-35A7-8619-86DC379688B9}v11.0.61030\packages\vcRuntimeAdditional_x86
তারপরে পরীক্ষা করে।
আমি এই প্রশ্নটি জুড়ে এসেছি, ওয়াইএক্স দ্বারা নির্মিত একটি এমএসআই ইনস্টলারের অংশ হিসাবে ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য হিসাবে পরীক্ষা করার প্রসঙ্গে একটি উত্তর খুঁজছি।
সংস্করণ এবং অপারেটিং সিস্টেমের সাথে জিইউডির পরিবর্তন কীভাবে আমি পছন্দ করি না তাই ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য কিনা তা পরীক্ষা করতে আমি সি # তে লিখিত একটি কাস্টম অ্যাকশন তৈরি করে শেষ করেছি।
নীচের সমস্ত কিছু বিশেষত ভিজ্যুয়াল সি ++ 2015 পুনরায় বিতরণযোগ্য (x64) এর জন্য, তবে এটি যে কোনও সংস্করণের জন্য সহজেই পরিবর্তিত হতে পারে।
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Win32;
namespace CustomActions
{
public class DependencyChecks
{
[CustomAction]
public static ActionResult IsVC2015RedistInstalled(Session session)
{
session.Log("Begin Visual C++ 2015 Redistributable installation check.");
var dependenciesKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Classes\\Installer\\Dependencies");
foreach(var subKey in dependenciesKey.GetSubKeyNames())
{
var dependency = dependenciesKey.OpenSubKey(subKey);
var displayName = (string)dependency.GetValue("DisplayName");
if(displayName != null)
{
if (displayName.Contains("Microsoft Visual C++ 2015 Redistributable (x64)"))
{
session.Log("Visual C++ 2015 Redistributable is installed.");
return ActionResult.Success;
}
}
}
session.Log("Visual C++ 2015 Redistributable is not installed.");
session.Message(InstallMessage.Error, new Record(1, "This application requires Visual C++ 2015 Redistributable. Please install, then run this installer again. https://www.microsoft.com/en-us/download/details.aspx?id=53587"));
return ActionResult.Failure;
}
}
}
তারপরে ডাব্লুএক্সএস ফাইলে
<Binary Id='VC2015RedistCheck' SourceFile='!(wix.ResourcesDir=resources)\CustomActions.CA.dll'/>
<CustomAction
Id='VC2015RedistCheckAction'
Execute='immediate'
BinaryKey='VC2015RedistCheck'
DllEntry="IsVC2015RedistInstalled"
Return='check'/>
<InstallExecuteSequence>
<Custom Action='VC2015RedistCheckAction' After='InstallInitialize'/>
</InstallExecuteSequence>
সম্পাদনা করুন আমি এই উত্তরটি একটি কাস্টম অ্যাকশন তৈরি এবং ব্যবহার সম্পর্কে কিছু প্রাথমিক তথ্য দিয়ে আপডেট করছি।
WiX Toolset ভিজ্যুয়াল স্টুডিও 2017 এক্সটেনশানটি ইনস্টল করে ভিজ্যুয়াল স্টুডিও 2017 এ কাস্টম অ্যাকশন তৈরি করতে, আমি কাস্টম অ্যাকশন তৈরি করতে প্রজেক্ট টেম্পলেটটি ব্যবহার করেছি (ওয়াইএক্স ভি 3 এর জন্য সি # কাস্টম অ্যাকশন প্রকল্প)।
আমি উত্পন্ন প্রকল্পটি পরীক্ষা করে দেখেছি এবং এই নিবন্ধটির শুরুতে এটি ইতিমধ্যে পরিবর্তনগুলি তালিকাভুক্ত বলে মনে হয়েছে: https://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed তাই আমি এই নিবন্ধটি বিভাগে Adding Custom Action to the Installer
তুলেছি এবং কিছু টুইটের মাধ্যমে এটি অনুসরণ করেছি।
আর একটি জিনিস যা আমি করেছি তা হ'ল .NET ফ্রেমওয়ার্কটির সংস্করণ পরিবর্তন করে ৩.৫ এর মতো করা হয়েছে।
আমি এটি সত্যিই দরকারী মনে করি না তবে আপনি http://wixtoolset.org/docamentation/manual/v3/wixdev/extensions/authoring_custom_ferences.html দেখতে পারেন
আমার জন্য এই অবস্থানটি কাজ করেছে: HKEY_LOCAL_MACHINE OF সফ্টওয়্যার \ মাইক্রোসফ্ট, ডেভডিভ \ ভিসি \ পরিবেশন \ 11.0 \ রানটাইমনিমাম imum সংস্করণ
প্যাকেজ ইনস্টল করার পরে আপনার কোন সংস্করণ রয়েছে তা পরীক্ষা করে দেখুন এবং এটি আপনার ইনস্টলারের শর্ত হিসাবে ব্যবহার করুন। (আমার ভিসিআরড ইনস্টল করার পরে 11.0.50727 এ সেট করা আছে)।
কেবল কন্ট্রোল প্যানেল> প্রোগ্রাম এবং বৈশিষ্ট্যগুলিতে যান এবং সেগুলি সমস্ত সেখানে তালিকাভুক্ত থাকে।
আমি কোনও বিশেষজ্ঞ নই এবং লোকেরা যা জবাব দিচ্ছে তার তুলনায় এই উত্তরটি বেশ সহজ (রেজিস্ট্রি পরীক্ষা করা), সুতরাং আমি নিশ্চিত নই যে এটি সঠিক উত্তর কিনা তবে এটি আমার পক্ষে কৌশলটি করেছে।
আমি ইনোসেটআপ দিয়ে এটি সফল করেছি।
আমি রেজিস্ট্রি কীটির অস্তিত্ব পরীক্ষা করেছি:
HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes
যদি আনইনস্টল করা থাকে তবে এর অস্তিত্ব নেই। যদি ইনস্টল করা থাকে তবে এটি বিদ্যমান।
যাইহোক, এটি Wow6432 নোডেও হতে পারে:
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes
পরীক্ষা করা হচ্ছে মাধ্যমে পণ্যের জন্য ইনস্টলের স্থিতি MsiQueryProductState প্রায় কাছাকাছি সরাসরি রেজিস্ট্রি চেক সমতূল্য, কিন্তু আপনি এখনও জন্য GUID প্রয়োজন ProductCode ।
অন্য কোথাও উল্লিখিত হিসাবে, এই পদ্ধতির সাথে একটি অপূর্ণতা হ'ল প্রতিটি আপডেটের নিজস্ব প্রোডাক্ট কোড থাকে!
ধন্যবাদ, এমএসআই একটি আপগ্রেডকোড সরবরাহ করে যা পণ্যগুলির একটি 'পরিবার' সনাক্ত করে। এই তথ্যটি বের করার জন্য আপনি একটি এমএসআই খুলতে orca ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ভিএস ২০১৫ এর পুনঃ বিতরণযোগ্যটির জন্য আপগ্রেডকোড{65E5BD06-6392-3027-8C26-853107D3CF1A}
আপনি সেই আপগ্রেডকোডের জন্য সমস্ত পণ্য আইডি পেতে MsiEnumRelatedProducts ব্যবহার করতে পারেন । অনুশীলনে, যেহেতু প্রতিটি পুনঃলিখন আপডেট পূর্ববর্তীটিকে প্রতিস্থাপন করে, এর ফলে কেবলমাত্র একটি {B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
প্রোডাকোড পাওয়া যাবে - যেমন ভিএস2015 আপডেট 2 এক্স 86 এর জন্য।
নির্বিশেষে, আপনি তারপরে সংস্করণটি MsiGetProductInfo (productCode, INSTALLPROPERTY_VERSIONSTRING, ...) বা আপনার অনুরূপ সংস্করণের সাথে তুলনা করতে অনুরূপ ফাংশনগুলি পরীক্ষা করতে পারেন, যেমন একটি সমমান বা পরবর্তী সংস্করণ পরীক্ষা করতে।
মনে রাখবেন, যে সি ++ আবেদন মধ্যে, এছাড়াও আপনি ব্যবহার করতে পারেন _VC_CRT_MAJOR_VERSION
, _VC_CRT_MINOR_VERSION
, _VC_CRT_BUILD_VERSION
আপনি #include <crtversion.h>
- এই ভাবে আপনি ক্যালকুলেট সিআরটি সংস্করণ যা আপনার বাইনারি সঙ্গে নির্মিত হয়েছিল নির্ধারণ করতে পারেন।
এই পাওয়ারশেল কোডটি কৌশলটি করা উচিত
Get-ItemProperty
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize
আমারও একই জিনিস দরকার ছিল এবং যদিও এএফআইএকি প্রোগ্রাম থেকে এটি করা যায় না, এটি আমার পক্ষে কাজ করেছিল।
আমি সবেমাত্র স্টার্ট -> একটি প্রোগ্রাম আনইনস্টল করতে গিয়েছিলাম এবং ভিসি ++ পুনরায় বিতরণযোগ্য না পাওয়া পর্যন্ত স্ক্রোল করে রেখেছিলাম, যার মধ্যে একটি সংস্করণ নম্বর রয়েছে। সংস্করণ নম্বর গুগল করে, আমাকে বলেছে এটি ভিএস ২০১২ এসপি 1 এর অন্তর্গত।
পুরানো প্রশ্ন তবে এখানে আমরা সেই দৃষ্টিভঙ্গিটি ভিজুয়াল স্টুডিও 2005 সাল থেকে সাফল্যের সাথে ব্যবহার করেছি। আমি কেবল এটি ভিজ্যুয়াল স্টুডিও 2012 আপডেট 4 ব্যবহার করে পরীক্ষা করেছি (যেহেতু আমরা শেষ পর্যন্ত আমাদের সফটওয়্যারটি 2010 থেকে 2012 পর্যন্ত আপডেট করছি)।
যেহেতু ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য প্যাকেজগুলি উইন্ডোগুলির সাথে তাদের আনইনস্টলারটি নিবন্ধভুক্ত করে (তাই এটি নিয়ন্ত্রণ প্যানেল "প্রোগ্রাম এবং বৈশিষ্ট্যগুলি" তালিকায় প্রদর্শিত হয়), আমরা কেবল রেজিস্ট্রিতে আনইনস্টলার কী এর প্রদর্শনের নামটি পরীক্ষা করি।
এখানে প্রাসঙ্গিক এনএসআইএস কোডটি রয়েছে:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}\" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030" vs2012redistInstalled
DetailPrint "Microsoft Visual C++ 2012 Update 4 Redistributable not found!"
DetailPrint "Downloading from www.mywebsite.com"
; insert applicable download code here
ExecWait '"<downloaded redist exe>" /promptrestart /passive'
vs2012redistInstalled:
নোট করুন যেহেতু আমাদের ইনস্টলারটি 32 বিবিট এক্সপি, তাই উইন্ডোজ নির্ধারণ করে যে রেজিস্ট্রি কীটি উপরের অবস্থানের পরিবর্তে ভার্চুয়ালাইজড Wow6432 নোডে রয়েছে কিনা তাই উপরের কোডটি উভয় কী স্পষ্টভাবে পরীক্ষা না করে install৪ বিট এবং 32 বিট উভয় উইন্ডো ইনস্টল-এ কাজ করে।
এছাড়াও নোট করুন যে উপরের কোডটি ভিসি ++ রেডলিস্টের আলাদা সংস্করণে আপডেট করতে, কেবল রেজিস্ট্রি কী পাথের জিইউডি এবং আপনার প্রয়োজন মতো ডিসপ্লে নাম পরিবর্তন করুন।
যদিও এটি প্রস্তাবিত পদ্ধতি নাও হতে পারে, এটি ২০০৫, ২০১০, ২০১০ এসপি ১, এবং এখন ২০১২ -৪-এর রিডলিস্ট ব্যবহার করে উইন্ডোজ 10-এর মাধ্যমে এক্সপি / এক্সপি 64 এর মাধ্যমে উইন্ডোজগুলির প্রতিটি গন্ধ চালিয়ে গত 10 বছরে 10,000+ মেশিনে কাজ করেছে।
আমি এর Installed
মান পরীক্ষা করতাম
HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID}
চাবি
VC++ 2012 (x86)
হয়{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
WOW6432Node
VC++ redist
পণ্য উপর নির্ভর করে উপস্থিত বা না উপস্থিত হবেবেশিরভাগ লোকেরা যা মিস করে তা হ'ল /reg:32
উইন্ডোজ এক্স 64 এর কীটি পরীক্ষা করা দরকার ।
এই বিষয়ে মাইক্রোসফ্ট সহায়তা নিবন্ধটি দেখুন ।
এখানে একটি স্ক্রিপ্ট রয়েছে যা ভিজ্যুয়াল স্টুডিও 2012 আপডেট 4 এর জন্য ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্যকে কীভাবে সঠিকভাবে পরীক্ষা করতে হয় তা দেখায়।
@ECHO OFF
:Author
REM "CREATED BY WAR59312"
REM "FEB 7th 2017"
REM Clear Screen
CLS
TITLE Detect Visual C++ 2012 Redistributables
REM This Batch Script Detects If Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed
:DetectWindowsOS
REM Are We Running On x86 Or x64
IF NOT DEFINED PROCESSOR_ARCHITEW6432 (
IF %PROCESSOR_ARCHITECTURE% EQU x86 (
REM Windows Is x86
GoTo Check32Bit
) ELSE (
REM Windows Is x64
SET NeededFor64BitOnly=/reg:32
GoTo Check64Bit
)) ELSE (
REM Windows Is Unknown But Assume x64 To Be Safe
SET NeededFor64BitOnly=/reg:32
GoTo Check64Bit
)
:Check64Bit
REM Checks If Visual C++ 64Bit Redistributable for Visual Studio 2012 Update 4 Is Installed
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x64" /v "Version" %NeededFor64BitOnly% 2>NUL^ | (
FIND "v11.0.61030.00" >NUL
) && (
ECHO.
ECHO 64bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed
ECHO.
GoTo Check32Bit
) || (
ECHO.
ECHO 64bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is NOT Installed
ECHO.
GoTo Check32Bit
)
:Check32Bit
REM Checks If Visual C++ 32Bit Redistributable for Visual Studio 2012 Update 4 Is Installed
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86" /v "Version" %NeededFor64BitOnly% 2>NUL^ | (
FIND "v11.0.61030.00" >NUL
) && (
ECHO.
ECHO 32bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed
) || (
ECHO.
ECHO 32bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is NOT Installed
)
:END
ECHO.
PAUSE
EXIT
পাওয়ারশেল লিপি সমাধান:
@KayleeFrye_onDeck থেকে উত্তরের তথ্যের ভিত্তিতে
আমি একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করেছি যা ব্যবহারকারীর দ্বারা বর্ণিত সংস্করণগুলি যাচাই করে ও ইনস্টল করে দেয়, আমি এটির সাথে বিস্তৃত পরীক্ষা করিনি, তবে আমার নিজের সিআই (ক্রমাগত একীকরণ) দৃশ্যের জন্য এটি পুরোপুরি কার্যকরভাবে কাজ করে।
গিথুবের সম্পূর্ণ স্ক্রিপ্ট এবং তথ্য
আমি যে পদ্ধতির ব্যবহার করেছি তা এখানে সরবরাহিত তথ্যের ভিত্তিতে রেজিগুলি পরীক্ষা করার উপর ভিত্তি করে ছিল। স্ক্রিপ্টটি কী করে তার সংক্ষিপ্তসার নীচে:
function Test-RegistryValue {
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$Path,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$Value
)
try {
Get-ItemProperty -Path "$($Path+$Value)" -ErrorAction Stop | Out-Null
return $true
}
catch {
return $false
}
}
চেকিং / $redistInfo
ডাউনলোডিং / নিঃশব্দে ইনস্টল করা যার ভিত্তিতে কেলিফ্রি_অনডেকের সংকলিত তথ্য রয়েছে।
$redistInstalled = Test-RegistryValue -Path $redistInfo.RegPath -Value $redistInfo.RegValue
if($redistInstalled -eq $False) {
Invoke-WebRequest -Uri $redistInfo.DownloadUrl -OutFile $downloadTargetPath
Start-Process -FilePath $downloadTargetPath -ArgumentList "$($redistInfo.SilentInstallArgs)" -Wait -NoNewWindow | Wait-Process
}
সম্পূর্ণ স্ক্রিপ্ট এবং আরও তথ্য গিথুবে পাওয়া যাবে
যে কেউ অবদান রাখতে স্বাগত, যদি আমার কাছে সময় থাকে তবে আমি স্ক্রিপ্টটির আরও বিস্তৃত পরীক্ষা করব এবং এখানে তথ্য যুক্ত হওয়ায় নতুন প্যাকেজ যুক্ত করার চেষ্টা চালিয়ে যাব।
ভিসি 2012 এর জন্য সমস্ত রেজিস্ট্রি মান পাওয়া শক্ত তাই আমি একটি ছোট ফাংশন লিখেছি যা সমস্ত নির্ভরতার মধ্য দিয়ে যাবে এবং নির্দিষ্ট সংস্করণে মিলবে।
public static bool IsVC2012Installed()
{
string dependenciesPath = @"SOFTWARE\Classes\Installer\Dependencies";
using (RegistryKey dependencies = Registry.LocalMachine.OpenSubKey(dependenciesPath))
{
if (dependencies == null) return false;
foreach (string subKeyName in dependencies.GetSubKeyNames().Where(n => !n.ToLower().Contains("dotnet") && !n.ToLower().Contains("microsoft")))
{
using (RegistryKey subDir = Registry.LocalMachine.OpenSubKey(dependenciesPath + "\\" + subKeyName))
{
var value = subDir.GetValue("DisplayName")?.ToString() ?? null;
if (string.IsNullOrEmpty(value)) continue;
if (Regex.IsMatch(value, @"C\+\+ 2012")) //here u can specify your version.
{
return true;
}
}
}
}
return false;
}
নির্ভরতা:
using System.Text.RegularExpressions;
using Microsoft.Win32;
using System.Linq;
আপনি রেজিস্ট্রিতে অনুসন্ধান করতে পারেন ctআপনার কাছে আমার কাছে vs2012 নেই তবে আমার কাছে vs2010 রয়েছে।
3 প্ল্যাটফর্ম প্যাকেজের প্রতিটি জন্য 3 টি পৃথক (তবে খুব অনুরূপ) রেজিস্ট্রি কী রয়েছে। প্রতিটি কীতে 1 টির মান সহ "ইনস্টলড" নামক একটি DWORD মান থাকে।
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ ভিসি \ VCRedist \ এক্স 86
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ ভিসি \ VCRedist \ x64
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ ভিসি \ VCRedist \ ia64
আপনি তার জন্য রেজিস্ট্রি ফাংশন ব্যবহার করতে পারেন ......
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...