মূল কনটেন্টে যান
এআই টিউটোরিয়াল

DeepSeek Harness-কে Node.js ছাড়াই Windows একক-ফাইল ইনস্টলার হিসেবে প্যাকেজ করুন

এই টিউটোরিয়ালে DeepSeek Harness Easy-Setup ব্যবহার করে dsh ও পোর্টেবল Node.js-কে Windows একক-ফাইল ইনস্টলারে প্যাকেজ করা, ইনস্টলেশন, চালু করা, পরীক্ষা, লগ বিশ্লেষণ এবং সংস্করণ কনফিগারেশন দেখানো হয়েছে।

Node.js ছাড়াই DeepSeek Harness-এর Windows একক-ফাইল ইনস্টলার

প্রকল্পের পরিচিতি

DeepSeek Harness Easy-Setup হলো Windows-এর জন্য তৈরি একটি প্যাকেজিং প্রকল্প। এটি @deepseek-ai/dsh কমান্ড-লাইন প্রোগ্রাম, পোর্টেবল Node.js রানটাইম, লঞ্চার এবং স্টপারকে একটি ইনস্টলারে একত্র করে।

শেষ ব্যবহারকারীর আগে থেকে Node.js, npm বা অন্য কোনো নির্ভরতা ইনস্টল করার প্রয়োজন নেই। ইনস্টলেশনের পর ডেস্কটপ বা স্টার্ট মেনুর শর্টকাট থেকে dsh web চালু করা যায়; সার্ভিস প্রস্তুত হলে ব্রাউজার স্বয়ংক্রিয়ভাবে খুলবে।

ইনস্টলেশনের পরের সুবিধা

  • ডেস্কটপ ও স্টার্ট মেনুতে আলাদাভাবে “DeepSeek Harness” শর্টকাট তৈরি হয়।
  • চলমান সার্ভিস বন্ধ করার জন্য “DeepSeek Harness বন্ধ করুন” শর্টকাট তৈরি হয়।
  • লঞ্চার dsh web চালায় এবং সার্ভিস চালু হলে স্বয়ংক্রিয়ভাবে ব্রাউজার খোলে।
  • স্টার্ট মেনুতে আনইনস্টল করার প্রবেশপথ থাকে এবং Windows-এর “অ্যাপস” তালিকাতেও প্রোগ্রামটি দেখা যায়।
  • অ্যাপের আইকন হিসেবে dsh ফ্রন্টএন্ডের অন্তর্ভুক্ত তিমির favicon ব্যবহার করা হয়।
  • বর্তমান ব্যবহারকারীর জন্য ইনস্টল হয়, তাই UAC উন্নত-অনুমতি সংলাপ আসে না।

ডিফল্ট ইনস্টলেশন ডিরেক্টরি:

%LOCALAPPDATA%\Programs\DeepSeekHarness

ইনস্টলেশন উইজার্ডে ব্যবহারকারী অন্য ডিরেক্টরিও নির্বাচন করতে পারেন।

প্রকল্পের ডিরেক্টরি বোঝা

বিল্ড শুরু করার আগে কয়েকটি গুরুত্বপূর্ণ ডিরেক্টরির কাজ জেনে নেওয়া যায়:

  • build\build.ps1: প্রধান বিল্ড প্রবেশপথ। এটি dsh সংগ্রহ, পোর্টেবল Node.js ডাউনলোড, আইকন তৈরি, লঞ্চার ও স্টপার কম্পাইল এবং ইনস্টলার প্যাকেজ তৈরি করে।
  • build\fetch-nsis.ps1: পোর্টেবল NSIS 3.11 ডাউনলোড করে এবং SourceForge মিরর অনুপলব্ধ হলে অন্য মিরর চেষ্টা করে।
  • src\Launcher.cs: লঞ্চারের সোর্স কোড; কম্পাইলের পর DeepSeekHarness.exe তৈরি হয়।
  • src\Stopper.cs: স্টপারের সোর্স কোড; কম্পাইলের পর DeepSeekHarnessStop.exe তৈরি হয়।
  • src\installer.nsi: NSIS ইনস্টলেশন স্ক্রিপ্ট।
  • src\icon\build-icon.js: dsh-এর অন্তর্ভুক্ত sharp ব্যবহার করে তিমির SVG-কে বিভিন্ন আকারের ICO-তে রূপান্তর করে।
  • test\test-install.ps1: নীরব ইনস্টলেশন, ফাইল পরীক্ষা, চালু করা, বন্ধ করা, HTTP পরীক্ষা এবং আনইনস্টল পরীক্ষা চালায়।
  • work\: Node.js আর্কাইভ, NSIS এবং staging-এর মতো মধ্যবর্তী ফাইল সংরক্ষণ করে। এটি মুছে ফেলা যায়, আবার পরবর্তী বিল্ড দ্রুত করার জন্য রাখা যায়।
  • out\: চূড়ান্ত একক-ফাইল ইনস্টলার সংরক্ষণ করে।

বিল্ড পরিবেশ প্রস্তুত করা

বিল্ড মেশিনে নিচের শর্তগুলো পূরণ হতে হবে:

  • Windows 10 অথবা Windows 11 x64।
  • PowerShell 5.1।
  • .NET Framework 4.x।
  • Node.js ইনস্টল করা থাকতে হবে এবং node.exe যেন PATH থেকে পাওয়া যায়, অথবা বিল্ডের সময় স্পষ্টভাবে এর পথ দিতে হবে।
  • nodejs.org এবং SourceForge-এ প্রবেশাধিকার।

প্রকল্পটি সিস্টেমের নিজস্ব C# কম্পাইলার ব্যবহার করে দুটি এক্সিকিউটেবল ফাইল কম্পাইল করে। ডিফল্ট পথ:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe

সিস্টেমে NSIS 3.x ইনস্টল না থাকলে বিল্ড স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে পোর্টেবল সংস্করণটি work\nsis-এ ডাউনলোড করবে।

গুরুত্বপূর্ণ: প্রকল্পের পথে স্পেস থাকা উচিত নয়, কারণ makensis-এর কমান্ড-লাইন সংজ্ঞা প্যারামিটার স্পেসযুক্ত পথ সঠিকভাবে প্রক্রিয়া করতে পারে না।

প্রথম ধাপ: dsh ইনস্টল করা

বিল্ড স্ক্রিপ্ট ডিফল্টভাবে গ্লোবাল npm ডিরেক্টরি থেকে @deepseek-ai/dsh পড়ে। প্রথমে বিল্ড মেশিনে চালান:

npm i -g @deepseek-ai/dsh

ডিফল্ট প্যাকেজ ডিরেক্টরি:

%APPDATA%\npm\node_modules\@deepseek-ai\dsh

dsh অন্য কোথাও থাকলে পরে -DshSource প্যারামিটার দিয়ে পথ নির্দিষ্ট করা যাবে।

দ্বিতীয় ধাপ: একক-ফাইল ইনস্টলার তৈরি করা

প্রকল্পের মূল ডিরেক্টরিতে গিয়ে চালান:

powershell -ExecutionPolicy Bypass -File build\build.ps1

স্ক্রিপ্টটি ধারাবাহিকভাবে dsh ফাইল, পোর্টেবল Node.js, অ্যাপের আইকন, C# লঞ্চার, স্টপার এবং NSIS ইনস্টলার প্রস্তুত করবে। ডিফল্ট আউটপুট এমন হবে:

out\DeepSeekHarness-Setup-0.1.1.exe

README-তে দেওয়া উদাহরণ অনুযায়ী ইনস্টলারের আকার প্রায় 44 MB।

প্রচলিত বিল্ড প্যারামিটার

  • -DshSource <ডিরেক্টরি>: dsh প্যাকেজের ডিরেক্টরি নির্দিষ্ট করে।
  • -NodeExe <পথ>: বিল্ড মেশিনের node.exe নির্দিষ্ট করে।
  • -AppVersion <সংস্করণ>: ইনস্টলারের সংস্করণ নম্বর ওভাররাইড করে।
  • -WorkDir <ডিরেক্টরি>: মধ্যবর্তী ফাইলের ডিরেক্টরি পরিবর্তন করে।
  • -OutDir <ডিরেক্টরি>: ইনস্টলার আউটপুটের ডিরেক্টরি পরিবর্তন করে।

উদাহরণস্বরূপ, কাস্টম dsh পথ, Node.js পথ এবং সংস্করণ নম্বর ব্যবহার করতে:

powershell -ExecutionPolicy Bypass -File build\build.ps1 -DshSource C:\dev\dsh -NodeExe C:\nodejs\node.exe -AppVersion 0.1.1 -OutDir C:\dsh-output

ডিফল্টভাবে সংস্করণ নম্বর dsh-এর package.json থেকে নেওয়া হয়। প্রি-রিলিজ সংস্করণকে বেস সংস্করণে রূপান্তর করা হয়; যেমন 0.1.1-rc.2 থেকে 0.1.1 তৈরি হবে।

work\-এর ফাইলগুলো রাখা হয় এবং পুনরায় ব্যবহার করা হয়। Node.js আর্কাইভ একবার ডাউনলোড হওয়ার পর আর ডাউনলোড করা হয় না; আনজিপ করা NSIS ডিরেক্টরিও পরবর্তী বিল্ডে ব্যবহার করা হয়।

তৃতীয় ধাপ: ইনস্টলেশন ও প্রাথমিক ব্যবহার

বিল্ড শেষ হলে out\ ডিরেক্টরির ইনস্টলারটিতে ডাবল-ক্লিক করে উইজার্ড অনুসরণ করুন। বর্তমান ব্যবহারকারীর জন্য ইনস্টল হওয়ায় সাধারণত UAC উন্নত-অনুমতির বার্তা দেখা যাবে না।

  1. ডেস্কটপ বা স্টার্ট মেনুর “DeepSeek Harness”-এ ডাবল-ক্লিক করুন।
  2. লঞ্চার dsh web চালাবে।
  3. সার্ভিস প্রস্তুত হলে ডিফল্ট ব্রাউজার স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট পৃষ্ঠা খুলবে।
  4. সার্ভিস বন্ধ করতে “DeepSeek Harness বন্ধ করুন” চালান।
  5. প্রোগ্রাম সরাতে স্টার্ট মেনুর আনইনস্টল প্রবেশপথ অথবা Windows-এর “অ্যাপস” তালিকা ব্যবহার করুন।

ডিফল্ট ডিরেক্টরিতে নীরব মোডে ইনস্টল করাও যায়:

out\DeepSeekHarness-Setup-0.1.1.exe /S

চতুর্থ ধাপ: স্বয়ংক্রিয় পরীক্ষা চালানো

প্রকল্পে সম্পূর্ণ ইনস্টলেশন প্রক্রিয়া যাচাই করার একটি পরীক্ষা স্ক্রিপ্ট রয়েছে:

powershell -ExecutionPolicy Bypass -File test\test-install.ps1

পরীক্ষা স্ক্রিপ্ট নিচের কাজগুলো করবে:

  1. প্রকল্পের অধীনে testinstall\-এ নীরব ইনস্টলেশন করবে।
  2. ইনস্টলেশন ফাইল ও শর্টকাট একে একে পরীক্ষা করবে।
  3. সিমুলেটেড প্রবেশপথ ব্যবহার করে লঞ্চার ও স্টপারের আচরণ যাচাই করবে।
  4. ইনস্টলেশন ডিরেক্টরির পোর্টেবল Node.js ব্যবহার করে সত্যিকারভাবে একবার dsh web চালাবে।
  5. ডিফল্ট পরীক্ষার পোর্ট 3999 দিয়ে HTTP 200 প্রতিক্রিয়া পরীক্ষা করবে, যাতে প্রচলিত 3080 পোর্ট দখল না হয়।
  6. আনইনস্টল করে ফলাফল পরীক্ষা করবে।

আউটপুটে ### দিয়ে শুরু হওয়া একাধিক পরীক্ষা-সংক্রান্ত তথ্য দেখা যাবে। শেষ লাইনটি হওয়া উচিত:

ALL CHECKS PASSED

পরীক্ষা ব্যর্থ হলে শেষে ব্যর্থ আইটেমের সংখ্যা দেখানো হবে।

দ্রষ্টব্য: পরীক্ষায় তৈরি শর্টকাটের নাম আনুষ্ঠানিক ইনস্টলেশনের সঙ্গে সম্পূর্ণ একই। তাই পরীক্ষা চালানোর সময় বর্তমান ব্যবহারকারীর ডেস্কটপ ও স্টার্ট মেনুর শর্টকাটগুলো সাময়িকভাবে testinstall\-এর দিকে নির্দেশ করবে এবং আনইনস্টল ধাপে মুছে যাবে। পরীক্ষা শেষে আনুষ্ঠানিক ইনস্টলেশন পুনরুদ্ধার করতে ইনস্টলারের নীরব ইনস্টলেশন কমান্ড আবার চালাতে পারেন।

রান লগ ও ত্রুটি নির্ণয়

চালু থাকার সময় গুরুত্বপূর্ণ স্ট্যাটাস ফাইলগুলো এখানে সংরক্ষিত হয়:

%LOCALAPPDATA%\DeepSeekHarness\pid.txt
%LOCALAPPDATA%\DeepSeekHarness\run.log
  • pid.txt-এ চলমান dsh প্রক্রিয়ার আইডি সংরক্ষিত থাকে; স্টপার এটি ব্যবহার করে লক্ষ্য প্রক্রিয়া শনাক্ত করে।
  • run.log-এ dsh-এর স্ট্যান্ডার্ড আউটপুট ও স্ট্যান্ডার্ড ত্রুটি সংরক্ষিত হয়।

চালু করতে ব্যর্থ হলে লঞ্চার একটি পপ-আপে run.log-এর অবস্থান দেখাবে। সমস্যা অনুসন্ধানের সময় প্রথমে এই লগ দেখুন এবং পোর্ট দখল, নির্ভরতা লোড হওয়া বা সার্ভিস চালুর ত্রুটি পরীক্ষা করুন।

উন্নত কৌশল ও বাস্তবায়নের সতর্কতা

Node.js সংস্করণ যেন নেটিভ মডিউলের সঙ্গে সামঞ্জস্যপূর্ণ হয়

dsh-এর নির্ভরতায় node-pty, sharp এবং koffi-এর মতো নেটিভ মডিউল রয়েছে। পোর্টেবল Node.js-কে এসব মডিউলের সঙ্গে সামঞ্জস্যপূর্ণ হতে হবে। তাই বিল্ড স্ক্রিপ্ট ডিফল্টভাবে বিল্ড মেশিনের একই Node.js সংস্করণ নির্বাচন করে। -NodeExe পরিবর্তন করলে ইনস্টলার সঠিকভাবে চালু হচ্ছে কি না তা আবার যাচাই করুন।

সার্ভিস বারবার চালু হওয়া এড়ানো

ডিফল্ট 3080 পোর্টে dsh আগে থেকেই চললে লঞ্চারে আবার ডাবল-ক্লিক করলে দ্বিতীয় ইনস্ট্যান্স তৈরি হবে না। লঞ্চার pid ফাইলের প্রক্রিয়াটি এখনও সক্রিয় কি না পরীক্ষা করে এবং সরাসরি বিদ্যমান সার্ভিসের পৃষ্ঠা খোলে।

লঞ্চারকে খুব দ্রুত বন্ধ হতে দেবেন না

লঞ্চার dsh চালু করার পর ব্যাকগ্রাউন্ডে হোস্ট প্রক্রিয়া হিসেবে চলতে থাকে এবং dsh বন্ধ হওয়া পর্যন্ত স্ট্যান্ডার্ড আউটপুট ও স্ট্যান্ডার্ড ত্রুটি run.log-এ লিখতে থাকে। লঞ্চার সঙ্গে সঙ্গে বন্ধ হয়ে গেলে আউটপুট পাইপ বিচ্ছিন্ন হবে এবং dsh পরে লগ লেখার সময় EPIPE ত্রুটি দেখা দিতে পারে।

NSIS আনইনস্টল সম্পূর্ণ হওয়ার জন্য সঠিকভাবে অপেক্ষা করা

NSIS আনইনস্টলার প্রথমে নিজেকে %TEMP%-এ কপি করে, তারপর অস্থায়ী ডিরেক্টরি থেকে কাজ চালিয়ে যায়; মূল আনইনস্টল প্রক্রিয়াটি দ্রুত বন্ধ হয়ে যায়। তাই স্বয়ংক্রিয় স্ক্রিপ্ট শুধু মূল প্রক্রিয়া শেষ হওয়ার অপেক্ষা করতে পারে না; ইনস্টলেশন ডিরেক্টরি অদৃশ্য হওয়া পর্যন্ত পর্যায়ক্রমে পরীক্ষা করতে হবে। প্রকল্পের test-install.ps1-এ এর বাস্তবায়ন দেওয়া আছে।

ইনস্টলেশন স্ক্রিপ্টের এনকোডিং সম্পর্কে সতর্ক থাকুন

installer.nsi-কে UTF-8 BOM অথবা UTF-16LE এনকোডিংয়ে রাখতে হবে, নইলে NSIS Bad text encoding জানাবে। রিপোজিটরির সোর্স ফাইলগুলো BOM ছাড়া UTF-8; build.ps1 makensis চালানোর আগে সেগুলো UTF-16LE-তে রূপান্তর করে।

ইনস্টলারের আকার নিয়ন্ত্রণ করা

প্যাকেজিংয়ের সময় Windows x64 পরিবেশে লোড হবে না এমন ফাইল সরিয়ে ফেলা হয়। এর মধ্যে রয়েছে node-pty-এর Darwin, Linux, ARM64 প্রি-কম্পাইল করা ফাইল এবং sharp-এর WASM সংস্করণ। README অনুযায়ী, এই প্রক্রিয়ায় প্রায় 30 MB সাশ্রয় হয়।

লাইসেন্স সংক্রান্ত তথ্য

dsh মূল প্রোগ্রামটি MIT লাইসেন্সের অধীনে প্রকাশিত; বিস্তারিত dsh প্যাকেজের LICENSE ফাইলে দেখা যাবে। এই প্রকল্পের ইনস্টলার স্ক্রিপ্টও MIT লাইসেন্সে প্রকাশিত। তিমির আইকনটি dsh ফ্রন্টএন্ডের সম্পদ থেকে নেওয়া হয়েছে; এর কপিরাইট DeepSeek-এর।

সারসংক্ষেপ

DeepSeek Harness Easy-Setup dsh, পোর্টেবল Node.js, Windows-এর চালু ও বন্ধ করার প্রোগ্রাম এবং NSIS ইনস্টলেশন প্রক্রিয়াকে একত্র করে। পরিবেশ প্রস্তুত করার পর শুধু dsh গ্লোবালি ইনস্টল করে build\build.ps1 চালালেই এমন একটি একক-ফাইল ইনস্টলার তৈরি করা যায়, যার জন্য লক্ষ্য মেশিনে আগে থেকে Node.js ইনস্টল থাকা প্রয়োজন নেই। প্রকাশের আগে সম্পূর্ণ পরীক্ষা স্ক্রিপ্ট চালিয়ে লগ, Node.js সংস্করণের সামঞ্জস্য এবং শর্টকাট পুনরুদ্ধারের অবস্থা বিশেষভাবে যাচাই করার পরামর্শ দেওয়া হয়।