ভিজ্যুয়াল স্টুডিও 2012 এর জন্য ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য কিনা তা সনাক্ত করুন


109

ভিজ্যুয়াল স্টুডিও 2012 এর জন্য ভিজুয়াল সি ++ পুনরায় বিতরণযোগ্য ইনস্টল করা আছে কীভাবে সনাক্ত করবেন?

আমি গুগল চেষ্টা করেছিলাম এবং কেউ এই প্রশ্ন জিজ্ঞাসা করেনি, অবাক!


1
মাল্টি-থ্রেডড [ডিবাগ] ডিএল এর পরিবর্তে সি ++> কোড জেনারেশনে রানটাইম লাইব্রেরিটি মাল্টি থ্রেডড [ডিবাগ] এ সেট করে সেই নির্ভরতাটি সরিয়ে ফেলবেন না কেন? আমি কেবল নির্ভরশীলতা অপসারণ করে রানটাইম পুনর্নির্মাণ ইনস্টলেশনটির একটি সমস্যা সমাধান করেছি।
সেম কল্যাঙ্কু

আমি কীভাবে পরীক্ষা এবং ত্রুটি দ্বারা প্যাকেজগুলি সনাক্ত করতে পারি তা খুঁজে পেয়েছি। আমি আশা করি কোনও যাদু বুলেট ছিল, তবে যদি তা থাকে তবে আমি এটি এখনও পাইনি। আমি নীচে কিছু নির্দিষ্ট পুনর্বিবেচনার জন্য নীচে একটি উত্তর পেয়েছি যা বর্তমানে বেশিরভাগের সাথে সহায়তা করতে 100% সময় কাজ করে বলে মনে হচ্ছে ।
কায়লিফ্রি_ডোনেক

3
KayleeFrye_onDeck এর মাধ্যমে একটিতে গৃহীত উত্তরটি পরিবর্তন করে বিবেচনা করুন। আমি নির্ভরযোগ্য পদ্ধতির সন্ধানে যুগে যুগে সময় কাটিয়েছি এবং এটি এক হিসাবে মনে হচ্ছে, আমি মনে করি অন্য সমস্ত অবিশ্বস্ত উত্তর দিয়ে এটি অনেক লোককে সঠিক তথ্য সন্ধান করতে সহায়তা করবে
musefan

ভিজ্যুয়াল স্টুডিও 2017 রানটাইমগুলির জন্য একটি আপডেট আছে বলে মনে হচ্ছে: 14.10.V25017। লিঙ্ক: go.microsoft.com/fwlink/?LinkId=746572 আপনি কি রেজিস্ট্রি মানগুলি আপডেট করতে পারবেন?
কারেল ভার্গাউউ

উত্তর:


172

এটি নির্ভর করে আপনি কোন সংস্করণটি ব্যবহার করছেন। এই দুটি 2012 কীগুলি আপডেট 4 এর জন্য ডাউনলোড করার জন্য তাদের সম্পর্কিত সংস্করণগুলির সাথে আমার পক্ষে ভাল কাজ করেছে Please দয়া করে সচেতন থাকুন যে এই রেগের কয়েকটি অবস্থান ওএস-নির্ভর হতে পারে। আমি একটি উইন্ডোজ 10 x64 বক্স থেকে এই তথ্যটি সংগ্রহ করেছি । আমি কেবল এগিয়ে যাব এবং ইনস্টলেশনগুলি সনাক্ত করার জন্য অনুসন্ধান করা এই সমস্ত পুনর্নির্মাণ সংস্করণগুলি এবং রেজি কীগুলি ডাম্প করব .:


ভিজ্যুয়াল সি ++ 2005

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


ভিজ্যুয়াল সি ++ 2012

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 । .. "


ভিজ্যুয়াল সি ++ 2013

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

বিকল্প হিসাবে 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


ভিজ্যুয়াল সি ++ 2017

বিকল্প হিসাবে 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 ( 2015-2019 বান্ডেল )

কেভিয়েট : ভিজ্যুয়াল সি ++ 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

এর মধ্যে যদি কোনও পুরানো হয়ে যায় তবে দয়া করে এখানে আমার সাথে যোগাযোগ করুন।


4
এটি নিখুঁত। এটিই কেবলমাত্র আমি খুঁজে পেয়েছি যে ভিজ্যুয়াল স্টুডিও ইনস্টল হয়ে গেলে বা রানটাইমটি আনইনস্টল করা হলে মিথ্যা ধনাত্মকতা দেয় না।
এএন

2
ভিএস2015 পূর্ব আপডেট 1 এর জিইউডি হ'ল d 74d0e5db-b326-4dae-a6b2-445b9de1836e} যাতে আপনি এই প্রক্রিয়াটি ব্যবহার করে একটি আচারে উঠতে পারেন। প্রতিটি ভবিষ্যতের আপডেটের জন্য! আপডেট 1 ইনস্টলডের সাথে পূর্ববর্তী 1 আপডেটের ভিসিআরডিস্ট চালু করা আমাকে একটি ত্রুটি দিয়েছে - সুতরাং আমি ভিসি ইনস্টলার ইনস্টলারের রেগ কীটি ব্যবহার করব - আপনি ভিসিডিস্ট ব্যবহার করলে ভাল মনে হয়?
জিলসডিমিল্ডটন

4
দুর্ভাগ্যক্রমে এটিতে ভিসিআরআইডিডিডি 14.0 আপডেট 2 নেই - আমরা কীভাবে সামনের সামঞ্জস্যের সাথে সামিল করব (একই সাথে নতুন সময় সনাক্তকরণের সংস্করণ)
শন উইলসন

2
@ মঞ্জুনাথবাবু, আমি বিশ্বাস করি না যে ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য ইনস্টলারগুলির জন্য রেজিস্ট্রি কনভেনশন সম্পর্কিত কোনও বাহ্যিক নথি আছে। আমি কেবল লক্ষ্য করেছি যে তারা অর্থাত্ পিতামাতার কী নাম বাদ দিয়ে অন্য কোনও জিইউইডি নিক্ষেপ করার পরিবর্তে 2017 এর কাছাকাছি সময়ে কোনও স্কিমের সাদৃশ্যযুক্ত কিছু অনুসরণ করেছে বলে মনে হয়েছে। এখনও অবধি, তারা 2017 এর জন্য মুক্তিপ্রাপ্ত সমস্ত ইনস্টলারের জন্য এই অবস্থানগুলি ব্যবহার করেছে: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{$GUID}এবং[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{$GUID}
কায়লিফ্রি_ডোনপ

2
ভিজ্যুয়াল সি ++ 2017 এর নতুন প্যাকেজটি নিবন্ধের পথ পরিবর্তন করে (সংস্করণ 14.16.27012.6)[HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle] [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle]
লাইভ 2

31

চেষ্টা

HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0

একটি সূচনা পয়েন্ট হিসাবে। আমি এটি ভিসি ++ 11 (ভিএস 2012) রানটাইম ইনস্টল করার জন্য চেক হিসাবে ব্যবহার করব।


7
HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ DevDiv \ ভিসি \ সার্ভিসিং 11.0 \ রানটাইমনিমাম imum ইনস্টল 1
অ্যালেক্স স্পেন্স

3
32-বিটের জন্য (ওরফে x86) কীটি এখানে অবস্থিত:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
কোডফক্স

@ কেলেলিফ্রি_অনডেক আপনি কীভাবে এটি করতে পেলেন? আমি এখনও একটি নির্ভরযোগ্য উপায় খুঁজছি, তবে এই পৃষ্ঠার উত্তরগুলির
এএন

মাইক্রোসফ্ট সরবরাহ করে এমন প্রতিটি প্যাচ পরিবর্তিত হতে পারে বলে প্যাকেজ
ইউইউডি-

25

এই রেজিস্ট্রি অবস্থানের 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


আমার কাছে 2012 ভিসি ++ রানটাইম ইনস্টল থাকা একটি 32-বিট উইন 7 মেশিন রয়েছে এবং আমার কাছে এই রেজি কীটি নেই।
ব্রায়ানজে

আপনি কি নিশ্চিত যে আপনার কাছে `HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ ভিজ্যুয়ালস্টুডিও \ 11.0 \ ভিসি নেই? তোমার কী আছে?
মাইক ডি ক্লার্ক

2
আমার কাছে আছে HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VCতবে আমার কাছে Runtimesচাবি নেই। ডেভের উত্তরে আমার কী আছে HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
ব্রায়ানজে

@ ব্রায়ানজে অদ্ভুত যে প্রতিটি সিস্টেমই এত আলাদা হতে পারে ... এই দরকারী তথ্য যুক্ত করার জন্য ধন্যবাদ
মাইক ডি ক্লার্ক

3
মজার গল্প এবং এমএস থেকে কোনও বাস্তব তথ্য নেই। আমি মনে করি আপনার কাছে এখনও অবধি আমি সেরা উত্তর পেয়েছি answer রিলেটিভলি টাটকা ভিএম-তে ভিসিরিস্ট ইনস্টল করার জন্য পরীক্ষিত এবং পরে এটিই আমি খুঁজে পেয়েছি key তাই আমার দিক থেকে থাম্ব ...
এনিহপ্প

12

ভিজ্যুয়াল সি ++ সহ শিপিত বুটস্ট্র্যাপার প্যাকেজ ম্যানিফেস্টে কোনও ইনস্টল-চেক উপাদান নেই। অনুমান করুন মাইক্রোসফ্ট যদি আপনি পূর্বশর্ত হিসাবে সেট করে থাকেন তবে সর্বদা ইনস্টল করতে চান।

অবশ্যই আপনি এখনও এমসিআইকিউরিপ্রডাক্ট স্টেট কল করতে পারেন, ভিসি পুনর্নির্মাণ প্যাকেজটি এমএসআইয়ের মাধ্যমে ইনস্টল করা আছে কিনা তা পরীক্ষা করতে, প্যাকেজ কোডটি চালিয়ে পাওয়া যাবে

wmic product get

কমান্ড লাইনে, বা আপনি যদি ইতিমধ্যে ডাব্লুএমই থেকে থাকেন: মূল \ ক্লিপ, চালান

product where "Caption like '%C++ 2012%'"

10

এই সাধারণ প্রশ্নের উত্তর দুর্ভাগ্যক্রমে একটি সহজ নয়, তবে সমস্ত সিস্টেমে 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

তারপরে রানটাইম চেক চালু করুন যেমন ওয়েলকাম পৃষ্ঠাটি ছেড়ে যাওয়ার সময় এবং ফলাফলটি ক্যাশে করে রাখুন, সুতরাং ব্যবহারকারী যখনই "পিছনে" এবং "পরবর্তী" বোতামে ক্লিক করবে তখন আপনাকে পুনরায় পরীক্ষা করতে হবে না।

এর পরে, ইনস্টল ট্রিটিতে একটি পঠনযোগ্য বিভাগ তৈরি করুন এবং উপাদান পৃষ্ঠাটি প্রদর্শিত হওয়ার আগে সম্পাদন করা একটি ফাংশনটিতে এটি প্রাক-নির্বাচন বা নির্বাচন নির্বাচন করুন ।

এটি নিশ্চিত করবে যে প্রতিটি অনুপস্থিত রানটাইম উপাদানগুলির ইনস্টলেশনটি বাধ্যতামূলক এবং এটি ইতিমধ্যে উপস্থিত থাকলে এড়িয়ে যায়।


সহায়ক টিপটির জন্য আপনাকে ধন্যবাদ, আপনি কী প্রজেক্ট তৈরি করতে হবে মনে আছে? ভিএস এর কাছে :-) থেকে বেছে নেওয়ার আধিক্য রয়েছে।
গ্রীনল্ডম্যান

9

যেহেতু ভিজ্যুয়াল স্টুডিও 2010 এবং পরে উইনএসএক্সএস ব্যবহার বন্ধ করে দিয়েছে, কেবল% উইন্ডির% \ system32 \ msvcr110.dll পরীক্ষা করা যথেষ্ট। আপনি যদি নতুন পর্যায়ে নতুন সংস্করণ যাচাই করতে চান তবে ফাইল সংস্করণটি 11.0.50727.1 (ভিএস2012 আরটিএম) বা 11.0.51106.1 (ভিএস2012 আপডেট 1) কিনা তা পরীক্ষা করতে পারেন।


+1 এটি সহজ এবং আরও নির্বোধ। রেজিস্ট্রি কীগুলি সমস্ত সূক্ষ্ম এবং এ জাতীয়, তবে ব্যবহারকারী যদি সিস্টেমটির সাথে বিশৃঙ্খলা করে এবং msvcr110.dll মুছে ফেলা হয় তবে রেজিস্ট্রি চেকটি অকেজো। আপনার প্রয়োজনীয় সমস্ত উপাদানগুলির জন্য এটি পরীক্ষা করা ভাল (এমএসভিসিআর 0110.ডিল, এমএসভিসিপি 110.ডিল, এমএফসি, ...)। এবং 3 আপডেটের জন্য সংস্করণটি 11.0.60610.1।
stijn

ঠিক আছে উপেক্ষা যে গত বিট: মনে হয় শুধুমাত্র ইনস্টলার 11.0.60610.1 হয়, সিআরটি ডিএলএল সংস্করণ এখনো 11.0.51106.1 হয়
stijn

আগে .dll 11.0.51106.1 যদিও আমি vs2012 sp4 ইনস্টল করেছি
Blub

এটি কাজ করবে না। আমি ২০০-201-২০১৫ আনইনস্টল করেছিলাম এবং এখনও আমার সেখানে 60০, 100, 110, 120, এবং 140 এর জন্য এমএসভিসি ফাইল রয়েছে।
kayleeFrye_onDeck

দ্রষ্টব্য যে ভিসি ++ 2012 আপডেট 4 ( 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তারপরে পরীক্ষা করে।
ওয়াই হা লি

5

আমি এই প্রশ্নটি জুড়ে এসেছি, ওয়াইএক্স দ্বারা নির্মিত একটি এমএসআই ইনস্টলারের অংশ হিসাবে ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য হিসাবে পরীক্ষা করার প্রসঙ্গে একটি উত্তর খুঁজছি।

সংস্করণ এবং অপারেটিং সিস্টেমের সাথে জিইউডির পরিবর্তন কীভাবে আমি পছন্দ করি না তাই ভিজ্যুয়াল সি ++ পুনরায় বিতরণযোগ্য কিনা তা পরীক্ষা করতে আমি সি # তে লিখিত একটি কাস্টম অ্যাকশন তৈরি করে শেষ করেছি।

নীচের সমস্ত কিছু বিশেষত ভিজ্যুয়াল সি ++ 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 দেখতে পারেন


4

আমার জন্য এই অবস্থানটি কাজ করেছে: HKEY_LOCAL_MACHINE OF সফ্টওয়্যার \ মাইক্রোসফ্ট, ডেভডিভ \ ভিসি \ পরিবেশন \ 11.0 \ রানটাইমনিমাম imum সংস্করণ

প্যাকেজ ইনস্টল করার পরে আপনার কোন সংস্করণ রয়েছে তা পরীক্ষা করে দেখুন এবং এটি আপনার ইনস্টলারের শর্ত হিসাবে ব্যবহার করুন। (আমার ভিসিআরড ইনস্টল করার পরে 11.0.50727 এ সেট করা আছে)।


এই উত্তরটি আমরা ঠিক যা খুঁজছিলাম তা হ'ল (এখানে অন্যান্য উত্তরগুলির তুলনায়, যা রানটাইম সম্পর্কে কম এবং দুর্ভাগ্যক্রমে ভিজ্যুয়াল স্টুডিও সম্পর্কে আরও কম))
শন উইলসন

এই উত্তরটি কার্যকর হয় না, কারণ আপনি পুনরায় তালিকাগুলি আনইনস্টল করার পরে এই কীটি উপস্থিত রয়েছে।
kayleeFrye_onDeck

4

কেবল কন্ট্রোল প্যানেল> প্রোগ্রাম এবং বৈশিষ্ট্যগুলিতে যান এবং সেগুলি সমস্ত সেখানে তালিকাভুক্ত থাকে।

আমি কোনও বিশেষজ্ঞ নই এবং লোকেরা যা জবাব দিচ্ছে তার তুলনায় এই উত্তরটি বেশ সহজ (রেজিস্ট্রি পরীক্ষা করা), সুতরাং আমি নিশ্চিত নই যে এটি সঠিক উত্তর কিনা তবে এটি আমার পক্ষে কৌশলটি করেছে।

প্রোগ্রাম এবং বৈশিষ্ট্য


3
if RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Installed") = 0 Then
  if RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86","Installed") = 0 Then

3

আমি ইনোসেটআপ দিয়ে এটি সফল করেছি।

আমি রেজিস্ট্রি কীটির অস্তিত্ব পরীক্ষা করেছি:

HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes

যদি আনইনস্টল করা থাকে তবে এর অস্তিত্ব নেই। যদি ইনস্টল করা থাকে তবে এটি বিদ্যমান।

যাইহোক, এটি Wow6432 নোডেও হতে পারে:

HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes


এটি অসত্য। কীগুলি আনইনস্টল করা হলে উভয় স্থানে উপস্থিত থাকে।
kayleeFrye_onDeck

1
@ কেলেলিফ্রি_ডোন ইয়েপ ... আমাকে অবশ্যই আপনার সাথে একমত হতে হবে। তবে বাস্তবে, আমি যখন প্রথমবার চেষ্টা করেছি তখন তা সফল হয়েছিল। তবে সম্প্রতি এটি আপনার মত বলেছে said আমি জানি না কেন এমন হয়।
ফান্দি সুস্যান্তো

3

পরীক্ষা করা হচ্ছে মাধ্যমে পণ্যের জন্য ইনস্টলের স্থিতি 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>- এই ভাবে আপনি ক্যালকুলেট সিআরটি সংস্করণ যা আপনার বাইনারি সঙ্গে নির্মিত হয়েছিল নির্ধারণ করতে পারেন।


আপনি এই তথ্য কিভাবে পেলেন? এবং এটি কি x86 সংস্করণ বা x64 সংস্করণের জন্য আপগ্রেডকোড?
বেন কী

আপনি এমএসআই খুলতে এবং আপগ্রেডকোডটি নিষ্কাশন করতে অরকা ব্যবহার করতে পারেন। এখানে দেওয়া একটি কমপক্ষে x86 এর জন্য। যেখানে আমি বাকী তথ্য পেয়েছি, এটি প্রাথমিক উত্সর চেয়ে অনেক বেশি; বিশেষত পুনরায় তালিকা সম্পর্কিত বিষয়ে অনলাইনে এই পদ্ধতির অন্যান্য উল্লেখগুলি আমি খুঁজে পাইনি, তবে এমএসআই ইনস্টলারগুলির সাথে আপগ্রেডকোড / পারিবারিক প্যাটার্ন সাধারণ।
এডজম

আমি ওরকাকে সম্পর্কে অবহিত। সমস্যাটি সেই এমএসআইতে যাওয়ার সাথে সম্পর্কযুক্ত। আমি সরাসরি এটি অ্যাক্সেস করার উপায় জানি না। আমার জানা একমাত্র উপায়টি হ'ল কোনওভাবে এটি সি: \ উইন্ডোজ \ ইনস্টলার ডিরেক্টরিতে সন্ধান করা। আমার এই ডিরেক্টরিতে এক হাজারেরও বেশি ফাইল রয়েছে। ফাইলগুলি এলোমেলোভাবে নামকরণ করা হয়েছে। কোন এমএসআই সঠিক তা নির্ধারণের একমাত্র উপায় হ'ল বর্ণনাটি। এটিতে এক্সপ্লোরারটিতে 1000 টি ফাইলের উপরে Alt + এন্টারকে আঘাত করা বা 1,000 টি ফাইলের বর্ণনা ডাম্প করার জন্য একটি সরঞ্জাম ব্যবহার করা জড়িত।
বেন কী

ওহহ আচ্ছা. আপনি যদি এইচকেএলএম OF সফ্টওয়্যার, মাইক্রোসফ্ট, উইন্ডোজ, কারেন্ট ভার্সন \ ইনস্টলার \ আপগ্রেডকোডের মধ্যে প্রোডাক্টকোড জানেন তবে আপনি পাথ বা আপগ্রেডকোডটি সন্ধান করতেও রেজিস্ট্রিটি অনুসন্ধান করতে পারেন। তবে বাকীটি খুঁজে বের করার জন্য আপনার ডাব্লুএমআইসি (বা এমএসআই ডিবিতে কিছু অন্যান্য প্রোগ্রামেটিক অ্যাক্সেস) ব্যবহার করতে হতে পারে। ডাব্লুএমইসি পণ্য পান / ফর্ম্যাট করুন: সিএসভি এমন কোনও সিএসভি ডাম্প করবে যা আপনি সন্ধান করতে পারেন - এতে ফিরে আসা মানগুলিতে এমএসআই পাথ রয়েছে। আপনি আরও ভাল স্ক্রিপ্ট লিখতে পারতেন আমি নিশ্চিত তবে আপনার পথে যাওয়ার জন্য এটি যথেষ্ট হওয়া উচিত।
adzm

3

এই পাওয়ারশেল কোডটি কৌশলটি করা উচিত

Get-ItemProperty
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table AutoSize

কারণ একগুচ্ছ প্রোডাক্ট কোডগুলি হার্ডকোডিং উড়ন্ত ছিল না, তাই আমরা খুব সহজেই রেজিস্ট্রিগুলিকে প্রতিটি এন্ট্রির "প্রোডাক্ট নেম" পরীক্ষা করে একটি রেইজেক্স দিয়ে গণনা করি, আমরা তারপরে VersionMajor / VersionMinor (যা আমরা সত্যই যত্নশীল) এটির মূল্য রয়েছে আমাদের একটি একক বিল্ড উত্পাদন করার অনুমতি দেওয়ার এবং জেনে রাখা যে এটি কোনও প্রদত্ত vcredist সংস্করণটির সার্ভিসিং লাইফের উপর কাজ করে যাবে। এখানে উদ্দেশ্যটি স্পট-অন, তবে এনএসআইএস বা উইনাপি-ভিত্তিক ইনস্টলারগুলির মতো সরঞ্জামসেটগুলির জন্য লিখিত লিখনের প্রয়োজন হতে পারে।
শান উইলসন

2

আমারও একই জিনিস দরকার ছিল এবং যদিও এএফআইএকি প্রোগ্রাম থেকে এটি করা যায় না, এটি আমার পক্ষে কাজ করেছিল।

আমি সবেমাত্র স্টার্ট -> একটি প্রোগ্রাম আনইনস্টল করতে গিয়েছিলাম এবং ভিসি ++ পুনরায় বিতরণযোগ্য না পাওয়া পর্যন্ত স্ক্রোল করে রেখেছিলাম, যার মধ্যে একটি সংস্করণ নম্বর রয়েছে। সংস্করণ নম্বর গুগল করে, আমাকে বলেছে এটি ভিএস ২০১২ এসপি 1 এর অন্তর্গত।


2

পুরানো প্রশ্ন তবে এখানে আমরা সেই দৃষ্টিভঙ্গিটি ভিজুয়াল স্টুডিও 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+ মেশিনে কাজ করেছে।


1

আমি এর Installedমান পরীক্ষা করতাম

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID} চাবি

  • যেখানে থেকে GUID VC++ 2012 (x86)হয়{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
  • WOW6432NodeVC++ redistপণ্য উপর নির্ভর করে উপস্থিত বা না উপস্থিত হবে

0

বেশিরভাগ লোকেরা যা মিস করে তা হ'ল /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

0

পাওয়ারশেল লিপি সমাধান:

@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
}

সম্পূর্ণ স্ক্রিপ্ট এবং আরও তথ্য গিথুবে পাওয়া যাবে

যে কেউ অবদান রাখতে স্বাগত, যদি আমার কাছে সময় থাকে তবে আমি স্ক্রিপ্টটির আরও বিস্তৃত পরীক্ষা করব এবং এখানে তথ্য যুক্ত হওয়ায় নতুন প্যাকেজ যুক্ত করার চেষ্টা চালিয়ে যাব।


0

ভিসি 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;

-5

আপনি রেজিস্ট্রিতে অনুসন্ধান করতে পারেন 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

আপনি তার জন্য রেজিস্ট্রি ফাংশন ব্যবহার করতে পারেন ......


1
আমি প্রথম লাইনে এটি লিখেছি "আমার কাছে ভিএস2012 নেই" " এই মন্তব্যটি করার কোন প্রয়োজন তাই ............. এই শুধুমাত্র vs2010 ছিল
vikky

1
আপনি এটি নোট করেছেন, তবে মনে হয়েছিল যেন আপনি পরামর্শ দিচ্ছিলেন যে আপনার সমাধান ভিএস ২০১২ এর জন্যও কার্যকর হতে পারে যেহেতু এটি ওপির প্রশ্ন ছিল (তবে যাচাই করতে পারেনি যেহেতু আপনার ভিএস ২০১২ নেই)। আমি কেবল বলছিলাম যে এই পদ্ধতির, VS2012 এর সাথে কাজ করে না, যেহেতু আমি এটি পরীক্ষা করে দেখেছি।
স্টেলার ইলেভেন

কেন আমার উত্তরটি ভোট দিন ...... আমি স্পষ্টভাবে লিখেছি যে এটি vs2012 এর জন্য ... এবং এটি ব্যবহারকারী দ্বারা উত্তর হিসাবে গ্রহণ করা হয়েছে .... তবে কেন ????????????
বিকি

1
দেখে মনে হচ্ছে একটি x64 বিট ওএসের সাহায্যে এই মানটি অবস্থিতHKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...
বাস

1
বনাম 2012 চাবি HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 11.0 \ ভিসি \ runtimes হয় ____ HKLM \ সফটওয়্যার \ Wow6432Node \ মাইক্রোসফট \ VisualStudio \ 11.0 \ ভিসি \ runtimes ___
আদম এল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.