ডেস্কটপ অ্যাপ্লিকেশন ডিপ্লয় করা
কীভাবে একটি কোম্পানি বা স্কুলের কম্পিউটারে Antimatter ডেস্কটপ অ্যাপ্লিকেশন ইনস্টল করবেন এবং Windows, macOS এবং Linux-এ কেন্দ্রীয়ভাবে এর সার্ভার, ইউজারনেম এবং আপডেট চেক সেট করবেন।
অ্যাপ্লিকেশন ডাউনলোড করুন
ডেস্কটপ অ্যাপ্লিকেশনের রিলিজগুলো GitHub-এ, github.com/AntimatterChat/desktop-app/releases-এ রয়েছে। সার্ভারের মতো, অ্যাপ্লিকেশনটিও বীটায় আছে: হাইফেনের পরে একটি সফিক্সযুক্ত ভার্সন নম্বরযুক্ত রিলিজকে Pre-release হিসেবে চিহ্নিত করা হয়। প্রতিটি রিলিজের একটি SHA256SUMS ফাইল থাকে, যেখানে প্রতিটি ফাইলের চেকসাম রয়েছে। Linux-এ sha256sum --check --ignore-missing SHA256SUMS ব্যবহার করে ডাউনলোড যাচাই করুন, অথবা PowerShell-এ Get-FileHash <file> -Algorithm SHA256-এর আউটপুট SHA256SUMS-এর সংশ্লিষ্ট লাইনের সাথে তুলনা করুন।
- Windows (x64 এবং arm64):
.exeইনস্টলার,.msiপ্যাকেজ, বা একটি.zipআর্কাইভ। উদাহরণস্বরূপantimatter-desktop-<version>-win-x64.exeএবংantimatter-desktop-<version>-win-x64.msi। - macOS: একটি
.dmgডিস্ক ইমেজ বা.zip, Apple silicon (arm64), Intel Mac (x64) বা উভয়ের (universal) জন্য। - Linux (x64 এবং arm64): একটি .deb বা .rpm প্যাকেজ, একটি AppImage, একটি Flatpak বান্ডল বা একটি
.tar.gzআর্কাইভ।
কোন Windows ইনস্টলার ব্যবহার করবেন
| .exe ইনস্টলার | .msi প্যাকেজ | |
|---|---|---|
| যাদের জন্য | যারা নিজেই অ্যাপ্লিকেশন ইনস্টল করেন | যেসব কোম্পানি এটি তাদের কম্পিউটারে ডিপ্লয় করে |
| ইনস্টলেশন | শুধুমাত্র বর্তমান Windows অ্যাকাউন্টের জন্য, %LOCALAPPDATA%\Programs\antimatter-desktop-এ, অ্যাডমিনিস্ট্রেটর অধিকার ছাড়াই | কম্পিউটারের প্রতিটি ইউজারের জন্য, C:\Program Files\Antimatter-এ, অ্যাডমিনিস্ট্রেটর অধিকারসহ |
| আপডেট | অ্যাপ্লিকেশনটি নতুন ভার্সনের জন্য চেক করে এবং নতুন .exe ডাউনলোড করার প্রস্তাব দেয়, যা ইনস্টল করা কপিটিকে স্থানে স্থানে আপডেট করে | অ্যাপ্লিকেশনটি নতুন ভার্সনের জন্য চেক করে না: আপনি এগুলো ডিপ্লয় করেন |
অ্যাপটি GitHub-এ নতুন ভার্সন খোঁজে, প্রতি ঘণ্টায় একবার, এবং শুধু পূর্ণ রিলিজ দেখে, প্রি-রিলিজ নয়। যখন সেটি খুঁজে পায়, তখন সেটি ব্যবহারকারীকে জানায় এবং ডাউনলোড করার জন্য একটি লিংক দেয়। MSI দিয়ে ইনস্টল করা কপিটি ডিফল্টভাবে চেক করে না, কারণ যারা এটি ব্যবহার করেন তারা সাধারণত সফটওয়্যার ইনস্টল করতে পারেন না। আপনি EnableAutoUpdater সেটিং দিয়ে এটি চালু করতে পারেন: তখন ডাউনলোড করার জন্য যে ফাইলটি দেওয়া হয় তা নতুন .msi, যা অ্যাডমিনিস্ট্রেটার অধিকারের প্রয়োজন হয়।
SCCM (Configuration Manager), Intune বা Group Policy সফটওয়্যার ইনস্টলেশনের মাধ্যমে ম্যানেজড ডিপ্লয়মেন্টের জন্য MSI ব্যবহার করুন। MSI ইনস্টল করলে, যদি থাকে, ইনস্টলেশন চালানো অ্যাকাউন্টের .exe কপিটি মুছে ফেলা হয়।
আপনি যে সেটিংসগুলো ম্যানেজ করতে পারেন
এই একই সেটিংসগুলো প্রতিটি সিস্টেমে রয়েছে। Windows-এ এগুলো HKEY_LOCAL_MACHINE (কম্পিউটারের জন্য) বা HKEY_CURRENT_USER (একজন ব্যবহারকারীর জন্য) এর নিচে SOFTWARE\Policies\Antimatter রেজিস্ট্রি ভ্যালু হিসেবে থাকে। macOS এবং Linux-এ এগুলো ম্যানেজড প্রিফারেন্স বা পলিসি ফাইলের কী হিসেবে থাকে।
| সেটিং | Windows-এ | macOS এবং Linux-এ | এটি কী করে |
|---|---|---|---|
DefaultServerList | প্রতিটি সার্ভারের জন্য একটি সাবকী, যেখানে প্রতিটি স্ট্রিং ভ্যালু থাকে: ভ্যালুর নাম হলো তার ট্যাবের নাম, এবং ডেটা হলো তার URL | name এবং url সহ ডিকশনারি (Linux-এ অবজেক্ট) এর একটি অ্যারে | অ্যাপে সার্ভার যোগ করে। ব্যবহারকারীরা এগুলো সম্পাদনা বা মুছে ফেলতে পারে না। |
DefaultUsername | একটি স্ট্রিং | একটি স্ট্রিং | এই সার্ভারগুলোর লগইন পেজে ইউজারনেম পূরণ করে। |
EnableServerManagement | একটি DWORD, 0 বা 1 | একটি বুলিয়ান | 0 বা false: ব্যবহারকারীরা শুধুমাত্র DefaultServerList দ্বারা সেট করা সার্ভারগুলো ব্যবহার করতে পারেন, এবং অ্যাপটি সার্ভার যোগ, সম্পাদনা এবং মুছে ফেলার অপশনগুলো লুকিয়ে রাখে। সেট করা না থাকলে: ব্যবহারকারীরা তাদের নিজস্ব সার্ভার যোগ করতে পারেন। |
EnableAutoUpdater | একটি DWORD, 0 বা 1 | একটি বুলিয়ান | 0 বা false: অ্যাপটি কখনোই নতুন ভার্সন চেক করে না, এবং Check for Updates লুকিয়ে রাখে। 1 বা true: এটি চেক করে, এমনকি MSI দিয়ে ইনস্টল করা থাকলেও। সেট করা না থাকলে: .exe কপিটি চেক করে, MSI কপিটি করে না। |
TrustedEmbeddedMediaOrigins | একটি সাবকী, যেখানে স্ট্রিং ভ্যালু রয়েছে, প্রতিটি একটি JSON অবজেক্ট, যেখানে serverOrigin এবং embeddedOrigin রয়েছে | serverOrigin এবং embeddedOrigin সহ ডিকশনারি এর একটি অ্যারে | সার্ভারের পেজগুলোর মধ্যে এমবেড করা কনটেন্ট, যেমন ভিডিও মিটিং পেজ, সেই সার্ভারের জন্য অনুমোদিত ক্যামেরা এবং মাইক্রোফোন পারমিশন ব্যবহার করতে দেয়। |
- ব্যুজারনেম শুধুমাত্র পলিসি দ্বারা নির্ধারিত সার্ভারগুলোর লগইন পেজে পূরণ হয়, কোনো ব্যক্তি যোগ করা সার্ভারে নয় এবং কেউ যা লিখেছেন তার ওপরও নয়। মানুষ এখনও এটি পরিবর্তন করতে পারে। পারসেন্ট চিহ্নের মাঝের এনভায়রনমেন্ট ভ্যারিয়েবলগুলো প্রতিস্থাপিত হয়, তাই একটি মান সবাইয়ের জন্য কাজ করে: উইন্ডোজে
%USERNAME%বা macOS এবং লিনাক্সে%USER%অ্যাকাউন্টের নাম দেয়, এবং%USERNAME%@example.comএই প্যাটার্ন অনুসরণকারী একটি ইমেইল ঠিকানা দেয়। যদি কোনো ভ্যারিয়েবল সেট করা না থাকে, অ্যাপটি কিছুই পূরণ করে না। - যদি আপনি সার্ভার ম্যানেজমেন্ট বন্ধ করে দেন, তবে
DefaultServerList-এ কমপক্ষে একটি সার্ভার সেট করুন। - উইন্ডোজে, কম্পিউটার পলিসি (
HKEY_LOCAL_MACHINE) ইউজার পলিসি (HKEY_CURRENT_USER)-এর চেয়ে অগ্রাধিকার পায়। উভয়ের সার্ভার তালিকা একত্রিত করা হয়। - অ্যাপটি শুরু হলে সেটিংস পড়ে নেয়: পরিবর্তনের পরে, ব্যবহারকারীদের এটি বন্ধ করে আবার খুলতে হবে।
উইন্ডোজ: MSI দিয়ে সিলেন্ট ইনস্টলেশন
MSI পাবলিক প্রপার্টি গ্রহণ করে যা সেটিংসগুলো কম্পিউটার পলিসি হিসেবে লেখে, HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter-এ। এগুলোর ব্যবহার করুন একটি SCCM অ্যাপ্লিকেশনে, একটি Intune অ্যাপে বা একটি স্ক্রিপ্টে। PowerShell-এ:
msiexec /i antimatter-desktop-<version>-win-x64.msi /qn SERVERURL=https://chat.example.com SERVERNAME=Chat DEFAULTUSERNAME='%USERNAME%' AUTOUPDATE=0 SERVERMANAGEMENT=0
| প্রপার্টি | লেখেন | যদি না দেওয়া হয় |
|---|---|---|
SERVERURL | DefaultServerList-এর একটি সার্ভার, এই URL-এর সাথে | কোনো সার্ভার নেই |
SERVERNAME | সেই সার্ভারের ট্যাবের নাম | Antimatter |
DEFAULTUSERNAME | DefaultUsername | কিছুই নয় |
AUTOUPDATE | EnableAutoUpdater, 0 বা 1 | কিছুই নয়: MSI কপি আপডেটের জন্য চেক করে না |
SERVERMANAGEMENT | EnableServerManagement, 0 বা 1 | কিছুই নয়: মানুষ সার্ভার যোগ করতে পারে |
- যদি কোনো প্রপার্টি না দেওয়া হয়, তবে কিছুই লেখা হয় না, তাই এটি Group Policy দ্বারা সেট করা মানকে ওভাররাইট করে না।
AUTOUPDATEএবংSERVERMANAGEMENTশুধুমাত্র 0 বা 1 গ্রহণ করে। MSI একটি সার্ভার সেট করে: আরও বেশি সার্ভারের জন্য Group Policy ব্যবহার করুন। DEFAULTUSERNAME-কে ইনস্টলার পর্যন্ত%USERNAME%টেক্সট হিসেবে পৌঁছাতে হবে, যাতে অ্যাপটি প্রতিটি ব্যক্তির জন্য এটি প্রতিস্থাপন করতে পারে। অন্যথায় ইনস্টলেশন চালানো শেলটি এটি তার নিজের অ্যাকাউন্টের নাম দিয়ে প্রতিস্থাপন করে। PowerShell-এ, সিঙ্গেল কোট রাখুন। একটি.batফাইলে, লিখুন%%USERNAME%%। একটি টেস্ট ইনস্টলেশনের পরে, রেজিস্ট্রিতে যাচাই করুন যেDefaultUsername-এ%USERNAME%রয়েছে।- প্রতিটি আপগ্রেডে প্রপার্টিগুলো আবার পাস করুন। MSI-এর নতুন ভার্সন ইনস্টল করলে পুরনো ভার্সনটি, যে মানগুলো সে লিখেছিল, মুছে যায়, তারপর নতুন কমান্ড লাইনের মানগুলো লেখা হয়। SCCM এবং Intune একটি অ্যাপ্লিকেশনের কমান্ড লাইন সংরক্ষণ করে: প্রতিটি নতুন ভার্সনের জন্য এটি পুনরায় ব্যবহার করুন। অথবা Group Policy বা Intune দিয়ে পলিসি সেট করুন, যা আপগ্রেড প্রক্রিয়ায় স্পর্শ করে না।
- MSI এবং গ্রুপ পলিসি একই রেজিস্ট্রি মান লেখে। প্রতিটি সেটিংয়ের জন্য একটি বা অন্যটি ব্যবহার করুন: MSI আনইনস্টল করলে সেটি লেখা মানগুলো মুছে যায়, এমনকি গ্রুপ পলিসিও সেগুলো সেট করে থাকলে।
- MSI তার ইনস্টলেশন ফোল্ডারও
HKEY_LOCAL_MACHINE\SOFTWARE\Antimatter\Desktop(InstallDir) এ রেকর্ড করে। এভাবেই অ্যাপটি জানতে পারে যে এটি MSI দিয়ে ইনস্টল করা হয়েছে।
আনইনস্টল করতে: msiexec /x antimatter-desktop-<version>-win-x64.msi /qn। Intune-এ "Windows app (Win32)" টাইপ একই কমান্ড লাইন গ্রহণ করে। "Line-of-business app" টাইপের জন্য, প্রপার্টিগুলো তার কমান্ড-লাইন আর্গুমেন্টে যোগ করুন।
Windows: গ্রুপ পলিসি এবং Intune
অ্যাডমিনিস্ট্রেটিভ টেমপ্লেট, antimatter.admx এবং en-US\antimatter.adml, ইনস্টল করা অ্যাপের gpo ফোল্ডারে (MSI-এর জন্য C:\Program Files\Antimatter\gpo) এবং অ্যাপের রিপোজিটরির resources/windows/gpo ফোল্ডারে রয়েছে। এগুলো Administrative Templates › Antimatter এর নিচে এই পলিসিসমূহ দেখায়:
| পলিসি | রেজিস্ট্রি মান | কনফিগারেশন |
|---|---|---|
| সার্ভারসমূহ (DefaultServerList) | DefaultServerList সাবকি | কম্পিউটার এবং ইউজার |
| পূর্বনির্ধারিত ইউজারনেম (DefaultUsername) | DefaultUsername | কম্পিউটার এবং ইউজার |
| লোকজন সার্ভার যোগ ও সরানোর অনুমতি (EnableServerManagement) | EnableServerManagement | কম্পিউটার এবং ইউজার |
| নতুন ভার্সন সম্পর্কে নোটিফাই (EnableAutoUpdater) | EnableAutoUpdater | শুধুমাত্র কম্পিউটার |
| বিশ্বস্ত এমবেডেড মিডিয়া উৎস (TrustedEmbeddedMediaOrigins) | TrustedEmbeddedMediaOrigins সাবকি | কম্পিউটার এবং ইউজার |
ডোমেইনে গ্রুপ পলিসি
antimatter.admxকে সেন্ট্রাল স্টোরে,\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions, এবংantimatter.admlকে তারen-USফোল্ডারে কপি করুন।- গ্রুপ পলিসি ম্যানেজমেন্ট এডিটরে, Computer Configuration (অথবা User Configuration) › Policies › Administrative Templates › Antimatter খুলুন।
- একটি পলিসি এডিট করুন, চালু নির্বাচন করুন এবং তা পূরণ করুন। সার্ভারসমূহ-এর জন্য, দেখান ক্লিক করে প্রতিটি সার্ভারের জন্য একটি লাইন যোগ করুন: মানের নাম হলো ট্যাবের নাম, মান হলো সার্ভারের URL, যেমন
https://chat.example.com।
লোকজন সার্ভার যোগ ও সরানোর অনুমতি বা নতুন ভার্সন সম্পর্কে নোটিফাই চালু করলে 1 লেখা হয়; নিষ্ক্রিয় করলে 0 লেখা হয়।
Intune
ডিভাইস › কনফিগারেশন-এ Import ADMX ব্যবহার করে antimatter.admx এবং en-US\antimatter.adml ইমপোর্ট করুন। এরপর টেমপ্লেট › Imported Administrative templates-এর থেকে একটি প্রোফাইল তৈরি করুন এবং সেখানে Antimatter পলিসিসমূহ সেট করুন।
একটি কম্পিউটার, অথবা একটি স্ক্রিপ্ট
gpedit.msc-এ (Windows Pro এবং Enterprise) ব্যবহার করতে টেমপ্লেটগুলো C:\Windows\PolicyDefinitions-এ কপি করুন। অথবা একটি .reg ফাইল অ্যাডমিনিস্ট্রেটর হিসেবে ইমপোর্ট করে (যেমন reg import antimatter-policies.reg) রেজিস্ট্রি ভ্যালুগুলো সরাসরি লিখে দিন। একই ফোল্ডারের example-policies.reg ফাইলে এই ভ্যালুগুলো কমেন্টসহ রয়েছে।
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter]
"EnableServerManagement"=dword:00000000
"EnableAutoUpdater"=dword:00000000
"DefaultUsername"="%USERNAME%"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter\DefaultServerList]
"Chat"="https://chat.example.com"
macOS: একটি কনফিগারেশন প্রোফাইল
macOS-এ অ্যাপটি তার বান্ডল আইডেন্টিফাইয়ার chat.antimatter.desktop-এর ম্যানেজড প্রিফারেন্স থেকে সেটিংস পড়ে, যেখানে সেটিংস টেবিলের কীগুলো রয়েছে। এগুলো আপনার MDM (Jamf, Intune, Kandji, Mosyle ইত্যাদি) দিয়ে একটি কনফিগারেশন প্রোফাইল হিসেবে ডিপ্লয় করুন।
- অ্যাপের রিপোজিটরির resources/mac/mdm ফোল্ডারে একটি উদাহরণ প্রোফাইল
antimatter.mobileconfigরয়েছে। এর ভ্যালুগুলো সম্পাদনা করুন, নিজস্বPayloadIdentifierএবংPayloadUUIDভ্যালু দিন (uuidgenদিয়ে নতুন UUID তৈরি করা যায়), এবং এটি একটি কাস্টম প্রোফাইল হিসেবে আপলোড করুন। - বেশিরভাগ MDM শুধুমাত্র কীগুলোও গ্রহণ করে,
chat.antimatter.desktop-এর জন্য "কাস্টম সেটিংস" বা "প্রিফারেন্স ডোমেইন" পেইলোড হিসেবে। একই ফোল্ডারেexample-managed-preferences.plistফাইলে এগুলো রয়েছে।
প্রোফাইলের পেইলোডের ভেতরের সেটিংস:
<key>PayloadType</key>
<string>chat.antimatter.desktop</string>
<key>DefaultServerList</key>
<array>
<dict>
<key>name</key>
<string>Chat</string>
<key>url</key>
<string>https://chat.example.com</string>
</dict>
</array>
<key>DefaultUsername</key>
<string>%USER%</string>
<key>EnableServerManagement</key>
<false/>
<key>EnableAutoUpdater</key>
<false/>
বুলিয়ান ভ্যালুগুলো 0 এবং 1 পূর্ণসংখ্যা হিসেবেও দেওয়া যেতে পারে।
Linux: পলিসি ফাইল
Linux-এ অ্যাপটি /etc/antimatter-desktop/policies.json পড়ে, যা সেটিংস টেবিলের কীসমূহসহ একটি JSON অবজেক্ট:
{
"DefaultServerList": [
{"name": "Chat", "url": "https://chat.example.com"}
],
"DefaultUsername": "%USER%",
"EnableServerManagement": false,
"EnableAutoUpdater": false,
"TrustedEmbeddedMediaOrigins": []
}
এটি আপনার কনফিগারেশন ম্যানেজমেন্ট টুল (Ansible, Puppet, Salt ইত্যাদি) দিয়ে ডিপ্লয় করুন, যেটি root-এর মালিকানাধীন, সবাই পড়তে পারে এবং শুধুমাত্র root লিখতে পারে:
sudo install -d /etc/antimatter-desktop
sudo install -m 644 policies.json /etc/antimatter-desktop/policies.json
যদি ফাইলটি বৈধ JSON না হয়, তবে এটি উপেক্ষা করা হয় এবং অ্যাপের লগে একটি সতর্কবার্তা দেখা যায়। Flatpak ভার্সন হোস্টের /etc দেখতে পায় না: এটিতে রিড অ্যাক্সেস দিন, এবং এটি ফাইলটি /run/host/etc/antimatter-desktop/policies.json থেকে পড়বে:
sudo flatpak override --system --filesystem=host-etc:ro chat.antimatter.desktop
Mattermost ডেস্কটপ অ্যাপের জন্য সেট করা পলিসিসমূহ
উইন্ডোতে, অ্যাপটি SOFTWARE\Policies\Mattermost এর নিচে Mattermost ডেস্কটপ অ্যাপের জন্য সেট করা পলিসিগুলোও ফলব্যাক হিসেবে পড়ে। এটি স্থান অনুযায়ী পড়ে: পলিসি কী-এর সরাসরি নিচের মানগুলো, DefaultServerList সাবকী এবং TrustedEmbeddedMediaOrigins সাবকী। এই তিনটি স্থানের প্রতিটিতে, Antimatter কী-তে কোনো মান না থাকলে (যেকোনো হাইভে) সেটি Mattermost কী-তে পড়ে। তাই, Antimatter কী-এর সরাসরি নিচে একটি মান সেট হলে, যেমন MSI-এর AUTOUPDATE প্রপার্টি দ্বারা, Mattermost কী-এর সরাসরি নিচের কোনো মানই পড়া হয় না। আপনার সব পলিসি একসাথে Antimatter কী-তে সরিয়ে নিন।
macOS-এ, Mattermost ডেস্কটপ অ্যাপের ম্যানেজড প্রিফারেন্স (com.mattermost.desktop) পড়া হয় না: সেগুলোর জন্য chat.antimatter.desktop সেট করুন।
অনসাইনড বিল্ড
ডেস্কটপ অ্যাপের বিল্ডগুলো এখনো পাবলিশার সার্টিফিকেট দিয়ে সাইন করা হয়নি।
- উইন্ডো। যখন কেউ ডাউনলোড করা
.exeবা.msiখোলে, Microsoft Defender SmartScreen জানায় যে উইন্ডো কম্পিউটারটি সুরক্ষিত করেছে এবং একটি অজানা পাবলিশারের নাম উল্লেখ করে। তারা আরও তথ্য বেছে নেন, তারপর তবুও চালান। SmartScreen ডাউনলোডের পরে খোলা ফাইলগুলো পরীক্ষা করে, তাই যখন আপনি SCCM, Intune বা Group Policy-এর মাধ্যমে অ্যাপটি ডিপ্লয় করেন, তখন মানুষ এই সতর্কতা দেখে না। যদি আপনার কম্পিউটারগুলো শুধুমাত্র অনুমোদিত পাবলিশারদের সফটওয়্যার চালায় (AppLocker বা App Control for Business নিয়ম), তবে অ্যাপটি তার ইনস্টলেশন পাথ বা ফাইল হ্যাশ অনুযায়ী অনুমোদিত করুন। - macOS। অ্যাপটি ad hoc সাইন করা, কিন্তু Apple-এর নোটারাইজ করা নয়। প্রথমবার ডাউনলোড করা কপি খোলার সময় macOS জানায় যে এটি অ্যাপটি ম্যালওয়্যারমুক্ত কিনা তা যাচাই করতে পারে না, এবং তা খোলে না। macOS 15 এবং পরবর্তী সংস্করণে, তারা System Settings › Privacy & Security খুলে তবুও খুলুন বেছে নেন। আগের সংস্করণগুলোতে, তারা অ্যাপে Control-ক্লিক করে খুলুন বেছে নেন। Gatekeeper শুধুমাত্র ডাউনলোড করা হিসেবে চিহ্নিত ফাইল (quarantine attribute সহ) পরীক্ষা করে: যখন আপনি নিজের টুল দিয়ে অ্যাপটি ইনস্টল করেন, তখন আপনার ইনস্টলেশন স্ক্রিপ্টে
xattr -dr com.apple.quarantine /Applications/Antimatter.appদিয়ে চিহ্নটি সরিয়ে ফেলুন।