32 ফিট এবং 64 বিট উইন্ডোজের জন্য পৃথক পৃথক পরিবেশের পরিবর্তনশীল - এটি কি সম্ভব?


14

PATHচলমান প্রক্রিয়াটির চিত্রের ধরণের (32 বিট / 64 বিট) নির্দিষ্ট করে কি পরিবেশের পরিবর্তনশীলের পুরো বা অংশ থাকা সম্ভব ? আমি যখন bit৪ বিবিট সেন্টিমিডি.এক্সের মধ্যে থেকে কিছু অ্যাপ্লিকেশন চালিত করি তখন আমি এটি ওপেনএসএসএল লাইব্রেরির bit৪ বিট সংস্করণ বাছাই করতে চাই, যখন আমি 32 বিবিটি সেন্টিমিডি.এক্সইয়ের মধ্যে কিছু অ্যাপ্লিকেশন চালিত করি তখন আমি এটি ওপেনএসএসএল লাইব্রেরির 32 বিট সংস্করণটি বেছে নিতে চাই have

অনুসরণ করুন
যেখানে% প্রোগ্রামফায়ালস% ভেরিয়েবলটি প্যাথ এনভায়রনমেন্ট ভেরিয়েবলে ব্যবহৃত হয় যখন।

উত্তর:


9

আপনার %ProgramFiles%জন্য %ProgramFiles(x86)%কাজ করতে পরিবর্তনশীল স্যুইচিং env করতে:

ওপেনএসএসএল লাইব্রেরির x32 এবং x64 সংস্করণযুক্ত ফোল্ডারগুলিকে যথাযথ %programfiles%এবং %ProgramFiles(x86)%ডিরেক্টরিতে এবং PATHপরিবেশের ভেরিয়েবলে রাখুন, ভেরিয়েবলের মাধ্যমে এই ফোল্ডারগুলির একটি রেফারেন্স ব্যবহার করুন %programfiles%

এইভাবে, আপনি x32-বিট পরিবেশে চলতে থাকাকালীন আপনার PATHএন্ট্রিটি ডিস্কে %programfiles%/OpenSSL/স্বয়ংক্রিয়ভাবে সমাধান হয়ে যাবে %ProgramFiles(x86)%/OpenSSL/


1
ভাল এটা কাজ করতে আমি কিছু সমস্যা আছে। echo %programfiles%এটি যে ধরণের সেন্টিমিডি.এক্সই থেকে চালিত হয় তার উপর নির্ভর করে বিভিন্ন ধরণের পথ দেখায় তবে where ssleay32.dllউভয় প্রকারের সেন্টিমিডি.এক্সে (32 বিট এবং 64 বিট) এই ডেলটি খুঁজে পাবে না এবং INFO: Could not find files for the given pattern(s).কোনও ধারণা প্রদর্শন করে ?
পাইটর ডব্রোগস্ট

এটির সাহায্য হতে পারে:
যথেষ্ট

1
যদি কোনও একটি ঘরটি 32-বিট হয় তবে 64-বিট মেশিনে এটি সি: \ উইন্ডোজ
ys syswow64

এটি আমার পক্ষে কাজ করে না। আমি যখন% প্রোগ্রামফায়ালসকে% PATH ভেরিয়েবল সংজ্ঞায় অন্তর্ভুক্ত করি তখন তা মোটেই প্রসারিত হয় না, তাই আমার এক্সিটি এর dlls খুঁজে পায় না।
কার্লোস এ। ইবাররা

7

রোমকার প্রদত্ত উত্তর (ডান হিসাবে চেক করা) সহজ এবং মার্জিত, তবে দুর্ভাগ্যক্রমে কার্যকর হয় না (কমপক্ষে উইন্ডোজ 7 এবং উইন্ডোজ 8 64 বিটগুলিতে, আমি আমার পরীক্ষাটি আর চাপলাম না)।

সমস্যাটি এ থেকে আসে যে সিস্টেম% PATH% ভেরিয়েবলটি সর্বদা অন্যান্য এনভির ভেরিয়েবলকে প্রসারিত করে না: উদাহরণস্বরূপ এটি% SYSTEMDRIVE% এর সাথে কাজ করে, তবে দুর্ভাগ্যক্রমে% PROGRAMFILES% এর ক্ষেত্রে নয়। উইকিপিডিয়া পরামর্শ দেয় যে এই আচরণটি ইন্ডিরিয়ারেশন স্তর থেকে আসে (% SYSTEMDRIVE% তৃতীয় এনভ ভেরিয়েবলের উল্লেখ করে না)।

আমি খুঁজে পাওয়া একমাত্র সমাধান হ'ল মন্তব্যে প্রস্তাবিত ফাইল সিস্টেম রিডাইরেক্টর ম্যাজিক এবং ডিরেক্টরি সিস্টেম 32 / সিসডাব্লুডব্লু 64 use

উইন্ডোজ ডিরেক্টরিতে সরাসরি ডিএলএলগুলির সরাসরি স্থাপনা এড়ানোর জন্য, যা সাধারণত রক্ষণাবেক্ষণ করা শক্ত, কেউ তার পরিবর্তে একটি কাস্টম ডিরেক্টরিতে উইন্ডোজ ভিস্তার এবং উইন্ডোজের পরবর্তী সংস্করণগুলিতে সফটলিঙ্ক স্থাপন করতে পারেন:

যাইহোক, প্রাসঙ্গিক পোস্টগুলিতে সরাসরি মন্তব্য না করার জন্য দুঃখিত: এটি করার জন্য বর্তমানে আমার অ্যাকাউন্টে যথেষ্ট খ্যাতি নেই।


5

হ্যাঁ এটা একেবারেই সম্ভব। কেবল তিনটি .bat ফাইল লিখুন। প্রথমটির মতো দেখতে হবে:

@echo off
if "%1" == "" goto x86
if not "%2" == "" goto usage

if /i %1 == x86 goto x86
if /i %1 == ia64 goto ia64
goto usage

:x86
if not exist "%~dp0bin\x86.bat" goto missing
call "%~dp0bin\x86.bat"
goto :eof

:ia64
if not exist "%~dp0bin\ia64.bat" goto missing
call "%~dp0bin\ia64.bat"
goto :eof

:usage
echo Error in script usage. The correct usage is:
echo %0 [option]
echo where [option] is: x86 ^| ia64
echo:
echo For example:
echo %0 x86
goto :eof

:missing
echo The specified configuration type is missing. The tools for the
echo configuration might not be installed.
goto :eof

দ্বিতীয় এবং তৃতীয় .bat ফাইলটি মূলত তাদের নামের সাথে পৃথক হওয়া ছাড়া একই are প্রথমটিকে x86.bat বলা হবে দ্বিতীয় ia64.bat এবং এগুলিকে বিন নামে একটি ফোল্ডারে স্থাপন করা হবে যা প্রথম ব্যাটের ফাইলের উপরে। আপনার এটি হবে:

PATH\first.bat
PATH\bin\x86.bat
PATH\bin\ia64.bat

দ্বিতীয় এবং তৃতীয় .bat ফাইলের সামগ্রীটি দেখতে এমন হওয়া উচিত:

@set PATH=THE PATH YOU WANT

আপনি প্রথম .bat ফাইলটিতে একটি লিঙ্ক তৈরি করতে পারেন যাতে নিম্নলিখিত সেটিংস থাকবে:

লক্ষ্য:% কমস্পেক% / কে "पथ \ ফার্স্টব্যাট" বিকল্প | যেখানে অপশনটি x86 বা ia64

শুরু: PATH | যেখানে পাঠ প্রথম আপনার প্রথম পাঠের পাথ

মাইক্রোসফ্ট তাদের ভিজ্যুয়াল স্টুডিও পরিবেশের জন্য ডান কমান্ড লাইন শুরু করতে সরলিকৃত স্ক্রিপ্টটি হ'ল। আপনি সহজেই এন স্ক্রিপ্টগুলিতে এই স্ক্রিপ্টগুলি প্রসারিত করতে পারেন। বিভিন্ন পরিবেশের জন্য আরও .bat ফাইল যুক্ত করে এবং আরও বিকল্প এবং গোটো স্টেটমেন্ট সহ ফার্স্ট.ব্যাট সম্পাদনা করে। আমি এটি নিজের ব্যাখ্যা করছি আশা করি।

এবং আমি আশা করি তাদের স্ক্রিপ্ট ব্যবহারের জন্য মাইক্রোসফ্ট আমার বিরুদ্ধে মামলা না করে।

সম্পাদনা করুন:

আহ আমি আপনাকে কিছুটা ভুল বুঝলাম। 32 বিবিটি সেমিডি লাইনের জন্য লিঙ্কটি তৈরি করা উচিত:

লক্ষ্য:% উইন্ডির% \ সিসউওডব্লিউ \৪ \ সেমিডি.এক্সএই "প্যাথ \ ফার্স্ট.বাট" x86

EDIT2:

এর মতো কিছু চেষ্টা করুন:

if "%ProgramFiles%" == "%ProgramFiles(x86)%" goto x64_PATH
if "%ProgramFiles%" == "%ProgramW6432%" goto x86_PATH

:x64_PATH
@set PATH=YOUR 64 bit PATH
SOME_PATH\your64BitApp.exe
goto :eof

:x86_PATH
@set PATH=YOUR 32bit PATH
SOME_PATH\your32BitApp.exe
goto :eof

1
আপনি এটি সংশোধন করতে চাইতে পারেন, কেবল স্বচ্ছতার জন্য - বৈষম্যগুলি হ'ল তারা ইন্টেল 64 বিট প্রযুক্তি (ia64 - Itanium CPUs) ব্যবহার করছে না বরং AMD64 বিট প্রযুক্তি ব্যবহার করছে যা সাধারণত x64 হিসাবে পরিচিত।
মাল্টিভার্স আইটি

আপনার উত্তরের জন্য ধন্যবাদ. ধারণাটি দুর্দান্ত। তবে আমি কিছু সিস্টেম স্তরের সমাধান খুঁজছিলাম যেমন %ProgramFiles%ভেরিয়েবল পরিবর্তন করতে ব্যবহৃত হয় । (উদ্ধৃতি:% প্রোগ্রামফায়ালস% নিজেই নির্ভর করে যে পরিবেশের ভেরিয়েবলের অনুরোধ করা প্রক্রিয়াটি নিজেই 32-বিট বা -৪-বিট (এটি উইন্ডোজ অন উইন্ডোজ 64৪ -বিট পুনঃনির্দেশের ফলে ঘটে)) en en.wikedia.org/wiki/ … )
পাইওটার ডব্রোগোস্ট

1

আমি কেবলমাত্র ব্যাপটিস্ট চারডনের উত্তরের প্রদত্ত লিঙ্কগুলি অনুসরণ করে যে উত্তর পেয়েছি তা সংক্ষিপ্ত করতে চেয়েছিলাম । ব্যবহারের mklinkকমান্ড লাইন টুল মধ্যে একটি ডিরেক্টরি সিম্বলিক লিঙ্ক তৈরি করতে C:\Windows\system32 এবংC:\Windows\SysWOW64, প্রতিটি একই নামের থাকার (বিভিন্ন লক্ষ্যমাত্রা যদিও), আপনি তারপর এক যোগ করতে পারেন C:\Windows\system32থেকে Pathএনভায়রনমেন্ট ভেরিয়েবল। উদাহরণ স্বরূপ:

C:\> mklink /D C:\Windows\SysWOW64\my_XXbit_dlls C:\dlls\x86
symbolic link created for C:\Windows\SysWOW64\my_XXbit_dlls <<===>> C:\dlls\x86
C:\> mklink /D C:\Windows\System32\my_XXbit_dlls C:\dlls\x64
symbolic link created for C:\Windows\System32\my_XXbit_dlls <<===>> C:\dlls\x64

0

আমার এই সমস্যা হয়েছে এবং উত্তরটি নিম্নরূপ:

আপনার 64 বিট মেশিনে আপনার সিস্টেমের পরিবর্তনশীল হওয়ার পথ c:\progra~2। আপনার পরিবেশগত পরিবর্তনশীলের জন্য আপনার কাছে ফাঁকাবিহীন পথ থাকা দরকার, অন্যথায় সিস্টেম এর চেয়ে বেশি পড়বে না C:\programs

আমাদের 32 বিট মেশিনে পরিবেশে পরিবর্তনশীল কোম্পানির প্রোগ্রামগুলি c:\program filesএবং এর 64 বিট এটিতে c:\progra~2। তারপরে আমরা ব্যবহারকারীদের জন্য আমাদের শর্টকাট সেট করি%companyprograms%\...

আপনি এটি গ্রুপ নীতি বা স্ক্রিপ্টের মাধ্যমে করতে পারেন।


-1

যেমন রোমকা ফলোআপে ইঙ্গিত করেছে, এর সহজ উত্তরটি হ'ল SYSWOW64 ডিরেক্টরি directory

ভাগ্যক্রমে শাইনিং লাইট প্রোডাকশন থেকে ইনস্টলাররা আপনার জন্য এটি যত্ন করে। কেবল 32 বিবিট এবং 64 বিট ইনস্টলার ইনস্টল করুন এবং উইন্ডো "সিস্টেম" ডিরেক্টরিতে .DLL অনুলিপি করতে নির্বাচন করুন এবং সঠিক ডিরেক্টরিটি .DLLs (যেমন bit৪ বিবিট .DLL গুলি সিস্টেম 32 এবং 32 বিবিট। ডিএলএলগুলিতে সিসডব্লিউ 64 এ যায়) জন্য বেছে নেওয়া হয়েছে।

একবার আমি এটি করতে পেরে আমার 32 বিট অ্যাপ্লিকেশনগুলিতে 32 বিবিট .ডিএলএল এবং আমার 64 বিট অ্যাপ্লিকেশনগুলি 64 বিবিট .ডিএলএল সন্ধান করে।

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