ইলেকট্রন অ্যাপ্লিকেশন তৈরির পর, আপনি সেই অ্যাপ্লিকেশনটি প্যাকেজ এবং বিল্ড করতে পারেন যাতে এটি বিভিন্ন অপারেটিং সিস্টেমে (যেমন Windows, macOS, Linux) সহজে চালানো যায়। এটি করার জন্য আপনি কিছু টুলস এবং লাইব্রেরি ব্যবহার করতে পারেন যেমন Electron Packager, Electron Builder, এবং Electron-forge।
এই গাইডে, Electron Packager এবং Electron Builder এর সাহায্যে Electron অ্যাপ্লিকেশন প্যাকেজিং এবং বিল্ডিং কীভাবে করা যায়, তা দেখানো হবে।
১. Electron Packager ব্যবহার করে অ্যাপ প্যাকেজিং
Electron Packager একটি সহজ এবং জনপ্রিয় টুল যা Electron অ্যাপ্লিকেশনকে এক্সিকিউটেবল ফাইল (যেমন .exe, .app, .deb ইত্যাদি) এ রূপান্তরিত করে, যাতে সেটি বিভিন্ন প্ল্যাটফর্মে চলতে পারে।
Electron Packager ইনস্টল করা
প্রথমে, Electron Packager ইনস্টল করতে হবে:
npm install electron-packager --save-dev
Electron অ্যাপ প্যাকেজ করা
ইনস্টল করার পর, আপনি electron-packager ব্যবহার করে অ্যাপ্লিকেশন প্যাকেজ করতে পারেন। নিচে একটি সাধারণ কমান্ড দেওয়া হলো, যা Windows, macOS এবং Linux প্ল্যাটফর্মের জন্য অ্যাপ প্যাকেজ করবে।
npx electron-packager . <app-name> --platform=win32 --arch=x64
<app-name>: আপনার অ্যাপ্লিকেশনের নাম।--platform=win32: উইন্ডোজের জন্য প্যাকেজ করা হবে।--arch=x64: 64-বিট আর্কিটেকচারের জন্য প্যাকেজ।
আপনি যদি একই অ্যাপ্লিকেশনকে একাধিক প্ল্যাটফর্মে প্যাকেজ করতে চান, তাহলে --platform এবং --arch এর মান পরিবর্তন করতে পারেন:
npx electron-packager . <app-name> --platform=darwin --arch=x64 # macOS
npx electron-packager . <app-name> --platform=linux --arch=x64 # Linux
ইনপুট এবং আউটপুট পাথ নির্ধারণ
এছাড়াও, আপনি ইনপুট এবং আউটপুট ডিরেক্টরি নির্ধারণ করতে পারেন:
npx electron-packager . my-app --out=dist --overwrite
--out=dist: প্যাকেজকৃত অ্যাপটিdist/ডিরেক্টরিতে সেভ হবে।--overwrite: আগের প্যাকেজে পরিবর্তন আসলে এটি স্বয়ংক্রিয়ভাবে ওভাররাইট করবে।
২. Electron Builder ব্যবহার করে অ্যাপ বিল্ডিং
Electron Builder একটি শক্তিশালী টুল যা Electron অ্যাপ্লিকেশন প্যাকেজিং, বিল্ডিং এবং ডিসট্রিবিউশনের জন্য ব্যবহৃত হয়। এটি আরও উন্নত ফিচার দেয়, যেমন অ্যাপ্লিকেশন আপডেট, প্যাকেজ ইনস্টলার তৈরি ইত্যাদি।
Electron Builder ইনস্টল করা
প্রথমে Electron Builder ইনস্টল করতে হবে:
npm install electron-builder --save-dev
package.json কনফিগারেশন
Electron Builder ব্যবহার করার জন্য package.json ফাইলে কিছু কনফিগারেশন যোগ করতে হবে:
{
"name": "my-app",
"version": "1.0.0",
"main": "main.js",
"build": {
"appId": "com.example.myapp",
"productName": "MyApp",
"win": {
"target": "nsis"
},
"mac": {
"target": "dmg"
},
"linux": {
"target": "AppImage"
}
},
"dependencies": {},
"devDependencies": {
"electron": "^25.0.0",
"electron-builder": "^23.0.0"
}
}
এখানে:
appId: আপনার অ্যাপের ইউনিক আইডি।productName: অ্যাপের নাম।target: যে ফরম্যাটে অ্যাপ প্যাকেজ হবে (যেমনnsis,dmg,AppImageইত্যাদি)।
Electron অ্যাপ বিল্ড করা
এখন Electron Builder ব্যবহার করে অ্যাপ বিল্ড করতে:
npx electron-builder
এই কমান্ডটি আপনার অ্যাপ্লিকেশন প্যাকেজ করবে এবং সঠিক প্ল্যাটফর্মের জন্য ইনস্টলার তৈরি করবে (যেমন .exe, .dmg, .AppImage ইত্যাদি)।
প্ল্যাটফর্ম এবং আর্কিটেকচার নির্ধারণ
আপনি --win, --mac, এবং --linux অপশন ব্যবহার করে নির্দিষ্ট প্ল্যাটফর্মের জন্য বিল্ড করতে পারেন:
npx electron-builder --win --x64 # Windows 64-bit
npx electron-builder --mac --x64 # macOS 64-bit
npx electron-builder --linux --x64 # Linux 64-bit
৩. ট্রেইলার বা ইনস্টলার তৈরি করা
Electron Builder আপনার অ্যাপ্লিকেশনের জন্য ইনস্টলার এবং আপডেটার তৈরি করতে সাহায্য করে। উদাহরণস্বরূপ:
- Windows: NSIS (Nullsoft Scriptable Install System) ব্যবহার করে উইন্ডোজ ইনস্টলার তৈরি করা হয়।
- macOS: dmg ফরম্যাটে ইনস্টলার তৈরি হয়।
- Linux: AppImage বা অন্যান্য প্যাকেজ ফরম্যাট তৈরি করা হয়।
Windows ইনস্টলার তৈরি করা (NSIS)
npx electron-builder --win --x64 --target nsis
macOS ইনস্টলার তৈরি করা
npx electron-builder --mac --x64 --target dmg
৪. অ্যাপ্লিকেশন আপডেট সিস্টেম
Electron Builder আপনার অ্যাপের জন্য auto-update সিস্টেমও প্রদান করে, যাতে আপনার ব্যবহারকারীরা সহজেই নতুন ভার্সন পেতে পারে।
আপডেট ব্যবস্থাপনার জন্য electron-updater প্যাকেজটি ব্যবহার করা হয়:
npm install electron-updater --save
আপনার অ্যাপ্লিকেশনের আপডেট ফিচার ব্যবহারের জন্য autoUpdater API ব্যবহার করতে পারেন।
সারাংশ
- Electron Packager: সহজ এবং দ্রুত প্যাকেজিং টুল, যেটি Electron অ্যাপ্লিকেশন প্যাকেজ করার জন্য ব্যবহৃত হয়।
- Electron Builder: একটি উন্নত টুল যা Electron অ্যাপ্লিকেশন প্যাকেজিং, বিল্ডিং এবং ইনস্টলার তৈরির জন্য ব্যবহৃত হয়। এটি অ্যাপের আপডেট সিস্টেমও পরিচালনা করতে পারে।
- প্যাকেজিং এবং বিল্ডিং: Electron অ্যাপ্লিকেশন প্যাকেজ করার জন্য
electron-packagerএবং বিল্ড করার জন্যelectron-builderব্যবহৃত হয়।
এই পদ্ধতিগুলির মাধ্যমে আপনি সহজেই আপনার Electron অ্যাপ্লিকেশন প্যাকেজ এবং বিল্ড করতে পারবেন, যা বিভিন্ন প্ল্যাটফর্মে চালানো যাবে।
ইলেকট্রন অ্যাপ্লিকেশন তৈরি করার পর, সেটি বিভিন্ন প্ল্যাটফর্মে (Windows, macOS, Linux) ডিস্ট্রিবিউট করার জন্য প্যাকেজিং করা প্রয়োজন। Electron Packager এবং Electron-builder হল দুইটি জনপ্রিয় টুল যা ইলেকটন অ্যাপ প্যাকেজ করতে ব্যবহৃত হয়। এই টুলগুলো অ্যাপ্লিকেশনটি একাধিক প্ল্যাটফর্মের জন্য প্যাকেজ করে এবং ইনস্টলার বা ডিস্ট্রিবিউশন ফাইল তৈরি করতে সাহায্য করে।
এখানে আমরা দেখব কিভাবে Electron Packager এবং Electron-builder ব্যবহার করে একটি ইলেকট্রন অ্যাপ প্যাকেজ করতে হয়।
১. Electron Packager ব্যবহার করে অ্যাপ প্যাকেজ করা
Electron Packager একটি সরল এবং জনপ্রিয় টুল যা Electron অ্যাপ্লিকেশন প্যাকেজ করতে ব্যবহৃত হয়। এটি আপনার অ্যাপের সোর্স কোড নিয়ে একটি প্ল্যাটফর্ম-নির্দিষ্ট এক্সিকিউটেবল তৈরি করে।
Electron Packager ইনস্টলেশন
প্রথমে, আপনি Electron Packager ইনস্টল করতে হবে:
npm install electron-packager --save-dev
Electron Packager ব্যবহার করে অ্যাপ প্যাকেজ করা
প্যাকেজিং করার জন্য, electron-packager কমান্ড ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
npx electron-packager . my-app --platform=win32 --arch=x64 --out=dist/
এই কমান্ডটি এইভাবে কাজ করবে:
.: বর্তমান ডিরেক্টরি থেকে অ্যাপ প্যাকেজ করা হবে।my-app: প্যাকেজের জন্য অ্যাপের নাম।--platform=win32: অ্যাপটি Windows প্ল্যাটফর্মের জন্য প্যাকেজ হবে।--arch=x64: অ্যাপটি 64-বিট আর্কিটেকচারের জন্য প্যাকেজ হবে।--out=dist/: প্যাকেজিংয়ের আউটপুটdist/ফোল্ডারে রাখা হবে।
এটি Windows এর জন্য অ্যাপের এক্সিকিউটেবল তৈরি করবে। অন্য প্ল্যাটফর্মের জন্য প্যাকেজ করতে, --platform=linux, --platform=darwin ইত্যাদি ব্যবহার করা যায়।
Electron Packager কনফিগারেশন
আপনি package.json ফাইলে স্ক্রিপ্ট যোগ করে কমান্ডটি সহজে চালাতে পারেন:
"scripts": {
"pack": "electron-packager . my-app --platform=win32 --arch=x64 --out=dist/"
}
এখন, আপনি npm run pack চালিয়ে অ্যাপ প্যাকেজ করতে পারবেন।
২. Electron-builder ব্যবহার করে অ্যাপ প্যাকেজ করা
Electron-builder হল আরও শক্তিশালী এবং অত্যাধুনিক একটি টুল যা Electron অ্যাপ্লিকেশনকে ডিস্ট্রিবিউট করার জন্য ইনস্টলার এবং ডিপেনডেন্সি সাইনিং এর মতো উন্নত ফিচার সরবরাহ করে। এটি electron-packager এর চেয়ে একটু বেশি কনফিগারযোগ্য এবং এটি একাধিক ইনস্টলার তৈরি করতে সহায়ক।
Electron-builder ইনস্টলেশন
প্রথমে, electron-builder ইনস্টল করতে হবে:
npm install electron-builder --save-dev
Electron-builder কনফিগারেশন
আপনার package.json ফাইলে build কনফিগারেশন যোগ করে আপনি electron-builder কনফিগার করতে পারেন:
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "My Electron App",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack": "electron-builder",
"dist": "electron-builder --publish never"
},
"build": {
"appId": "com.myapp.electron",
"productName": "My Electron App",
"win": {
"target": "nsis"
},
"mac": {
"target": "dmg"
}
}
}
এখানে build এর মধ্যে কিছু গুরুত্বপূর্ণ কনফিগারেশন পয়েন্ট:
appId: অ্যাপের ইউনিক আইডি।productName: অ্যাপের নাম যা ইনস্টলারে প্রদর্শিত হবে।win.target: উইন্ডোজের জন্য ইনস্টলার টার্গেট (এখানে NSIS ব্যবহার করা হয়েছে, যা উইন্ডোজ ইনস্টলার তৈরি করে)।mac.target: ম্যাকের জন্য ইনস্টলার টার্গেট (এখানে dmg ফাইল তৈরি হবে)।
Electron-builder ব্যবহার করে অ্যাপ প্যাকেজ করা
এখন, আপনার অ্যাপ প্যাকেজ করতে নিচের কমান্ডটি চালান:
npm run dist
এটি প্যাকেজ তৈরি করবে এবং ইনস্টলার ফাইল তৈরি করবে।
৩. প্ল্যাটফর্ম এবং আর্কিটেকচার কনফিগারেশন
আপনি Electron-builder ব্যবহার করে একাধিক প্ল্যাটফর্মের জন্য প্যাকেজ এবং ইনস্টলার তৈরি করতে পারেন।
উদাহরণ: Windows, macOS, এবং Linux এর জন্য প্যাকেজিং
npm run dist -- --platform=win32,linux,darwin --arch=x64
এটি তিনটি প্ল্যাটফর্মের জন্য (Windows, Linux, macOS) প্যাকেজ তৈরি করবে। --arch দ্বারা আপনি 32-বিট বা 64-বিট আর্কিটেকচারও নির্ধারণ করতে পারেন।
৪. Electron-builder এর আরো বৈশিষ্ট্য
- Auto Update: Electron-builder এর মাধ্যমে অ্যাপ্লিকেশন আপডেট সিস্টেমের জন্য ইনস্টলার তৈরি করা যায়।
- Code Signing: অ্যাপ্লিকেশনকে সাইন করা যেতে পারে, যা অ্যাপের নিরাপত্তা বাড়ায় এবং এটি উইন্ডোজ এবং macOS প্ল্যাটফর্মে যাচাইয়ের জন্য গুরুত্বপূর্ণ।
- Multi-Target Support: Electron-builder একাধিক ইনস্টলার (ডিএমজি, MSI, EXE, AppImage ইত্যাদি) তৈরি করতে সক্ষম।
সারাংশ
- Electron Packager এবং Electron-builder দুটি শক্তিশালী টুল যা Electron অ্যাপ প্যাকেজ এবং ডিপ্লয়মেন্টে ব্যবহৃত হয়।
- Electron Packager সোজা এবং সরল প্যাকেজিং প্রদান করে, তবে Electron-builder আরও উন্নত ইনস্টলার তৈরি করতে এবং বিভিন্ন প্ল্যাটফর্মের জন্য ডিপ্লয়মেন্ট করতে সাহায্য করে।
- Electron-builder এর মাধ্যমে আপনি Code Signing, Auto Update, এবং Multi-Target Support সহ আরও অনেক উন্নত বৈশিষ্ট্য ব্যবহার করতে পারেন।
এই টুলগুলির মাধ্যমে আপনি আপনার Electron অ্যাপ্লিকেশনকে বিভিন্ন প্ল্যাটফর্মে প্যাকেজ করতে পারবেন এবং ইনস্টলেশন ফাইল তৈরি করতে পারবেন।
Electron অ্যাপ্লিকেশন তৈরি করার পর, আপনাকে এই অ্যাপ্লিকেশনটি Windows, macOS এবং Linux অপারেটিং সিস্টেমে ইনস্টল করার জন্য একটি installer বা setup package তৈরি করতে হয়। electron-builder এবং electron-packager হল সবচেয়ে জনপ্রিয় টুল, যা Electron অ্যাপ্লিকেশন প্যাকেজিং এবং ইনস্টলেশন প্যাকেজ তৈরির জন্য ব্যবহৃত হয়।
এই টিউটোরিয়ালে, আমরা electron-builder ব্যবহার করে Windows, macOS, এবং Linux এর জন্য ইনস্টলার তৈরি করার প্রক্রিয়া দেখবো।
১. electron-builder ইনস্টল করা
প্রথমে, electron-builder প্যাকেজ ইনস্টল করতে হবে, যা Electron অ্যাপ্লিকেশনটি প্যাকেজ এবং ইনস্টল প্যাকেজ তৈরি করতে সহায়ক।
electron-builder ইনস্টল করার জন্য:
npm install electron-builder --save-dev
২. package.json কনফিগারেশন
electron-builder ব্যবহার করে অ্যাপ্লিকেশন প্যাকেজ করার জন্য package.json ফাইলে কিছু কনফিগারেশন যোগ করতে হয়। এটি অ্যাপ্লিকেশনের ইনস্টলার কনফিগারেশন যেমন নাম, ভার্সন, আইকন ইত্যাদি নির্ধারণ করে।
package.json ফাইলের কনফিগারেশন:
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "An Electron application",
"main": "main.js",
"build": {
"appId": "com.example.myapp",
"productName": "My Electron App",
"win": {
"target": "nsis", // Windows ইনস্টলার (NSIS)
"icon": "build/icon.ico"
},
"mac": {
"category": "public.app-category.utilities",
"icon": "build/icon.icns"
},
"linux": {
"target": "AppImage", // Linux ইনস্টলার (AppImage)
"icon": "build/icon.png"
},
"directories": {
"output": "dist" // ইনস্টল প্যাকেজের আউটপুট ফোল্ডার
}
},
"devDependencies": {
"electron": "^25.0.0",
"electron-builder": "^23.0.0"
}
}
appId: অ্যাপ্লিকেশনের একক আইডি যা আপডেট ফিচারের জন্য প্রয়োজনীয়।productName: অ্যাপের নাম যা ইনস্টলারের মধ্যে প্রদর্শিত হবে।win,mac,linux: প্রতিটি প্ল্যাটফর্মের জন্য ইনস্টলার কনফিগারেশন যেমন ইনস্টলার ফরম্যাট (NSIS, AppImage) এবং আইকন।directories.output: ইনস্টল প্যাকেজটি যেখানে তৈরি হবে।
৩. electron-builder দিয়ে ইনস্টলার তৈরি করা
electron-builder ব্যবহার করে প্ল্যাটফর্ম ভিত্তিক ইনস্টলার তৈরি করতে npm run কমান্ড ব্যবহার করা হয়। তবে, প্রথমে build স্ক্রিপ্ট package.json ফাইলে যুক্ত করতে হবে।
package.json-এ build স্ক্রিপ্ট যোগ করা:
"scripts": {
"start": "electron .",
"build": "electron-builder"
}
ইনস্টলার তৈরি করতে কমান্ড:
npm run build
এই কমান্ডটি electron-builder কে আপনার অ্যাপ্লিকেশনটি প্যাকেজ করতে বলবে এবং ইনস্টলার ফাইল তৈরি করবে। এটি সমস্ত প্ল্যাটফর্মের জন্য ইনস্টলার তৈরি করবে, যা আপনি নির্দিষ্ট প্ল্যাটফর্মে রান করতে পারবেন।
৪. প্রতিটি প্ল্যাটফর্মের জন্য ইনস্টলার
Windows (NSIS ইনস্টলার)
- NSIS (Nullsoft Scriptable Install System) ব্যবহার করে Windows ইনস্টলার তৈরি করা হয়। এটি একটি জনপ্রিয় ইনস্টলার ফরম্যাট যা উইন্ডোজে ব্যবহারকারীদের সহজেই অ্যাপ্লিকেশন ইনস্টল করতে সহায়ক।
- NSIS ইনস্টলারটি
.exeফরম্যাটে তৈরি হয়।
macOS (DMG এবং PKG)
- DMG (Disk Image) ফরম্যাটে macOS ইনস্টলার তৈরি হয়, যা ম্যাক ব্যবহারকারীরা অ্যাপ্লিকেশন ডাউনলোড এবং ইনস্টল করতে ব্যবহার করেন।
- PKG ইনস্টলারও তৈরি করা যায় যা ম্যানুয়ালি ইনস্টলেশনের প্রক্রিয়া প্রদান করে।
Linux (AppImage, Deb, RPM)
- AppImage ফরম্যাট ব্যবহার করে একটি প্ল্যাটফর্ম-নিরপেক্ষ ইনস্টলার তৈরি হয়, যা বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনে চলতে পারে।
- এছাড়া, Deb (Debian-based distros) এবং RPM (Red Hat-based distros) ইনস্টলারও তৈরি করা যায়।
৫. আইকন কাস্টমাইজেশন
আপনার অ্যাপ্লিকেশনের জন্য কাস্টম আইকন সেট করতে icon ফিল্ড ব্যবহার করতে হবে।
আইকন ফাইল কনফিগারেশন:
- Windows:
.ico - macOS:
.icns - Linux:
.png
আইকন ফাইলটি build/ ফোল্ডারে রাখুন এবং package.json-এ উল্লেখ করুন।
উদাহরণ:
"build": {
"win": {
"target": "nsis",
"icon": "build/icon.ico"
},
"mac": {
"icon": "build/icon.icns"
},
"linux": {
"icon": "build/icon.png"
}
}
৬. উইন্ডোজ ইনস্টলার কাস্টমাইজেশন (NSIS)
আপনি NSIS ইনস্টলার কাস্টমাইজ করতে পারেন, যেমন ইনস্টলার প্রক্রিয়ায় কাস্টম টেক্সট বা ডায়ালগ যোগ করা।
উদাহরণ: package.json কনফিগারেশন:
"win": {
"target": "nsis",
"icon": "build/icon.ico",
"artifactName": "my-app-setup-${version}.${ext}",
"extraResources": [
{
"from": "extraFiles/",
"to": "extraFiles/",
"filter": ["**/*"]
}
]
}
এখানে extraResources ফিচারটি ব্যবহার করে ইনস্টলার প্যাকেজে অতিরিক্ত ফাইল যুক্ত করা হয়েছে।
৭. ট্রাবলশুটিং
যখন ইনস্টলার তৈরি করবেন, কিছু সমস্যার সম্মুখীন হতে পারেন, যেমন:
- প্ল্যাটফর্ম নির্ভর সমস্যা: ইনস্টলার তৈরি করার সময় নিশ্চিত করুন যে নির্দিষ্ট প্ল্যাটফর্মের জন্য সঠিক ফাইল ফরম্যাট এবং কনফিগারেশন ব্যবহার করছেন।
- আইকন সমস্যা: ইনস্টলারের আইকন সঠিকভাবে প্রদর্শিত না হলে নিশ্চিত করুন যে আইকনটি সঠিক ফরম্যাটে এবং সঠিক স্থানে রয়েছে।
সারাংশ
- Electron অ্যাপ্লিকেশনের ইনস্টলার তৈরি করতে
electron-builderএকটি শক্তিশালী টুল। - Windows, macOS, এবং Linux এর জন্য ইনস্টলার তৈরি করা যায় NSIS, DMG, AppImage ইত্যাদি ফরম্যাটে।
- ইনস্টলার কাস্টমাইজেশন, আইকন সেট করা এবং অতিরিক্ত ফাইল যোগ করার জন্য
package.jsonকনফিগারেশন ব্যবহার করা হয়। - electron-builder টুলটি অ্যাপ্লিকেশন প্যাকেজিং এবং ইনস্টলার তৈরি করতে সাহায্য করে, যা আপনার Electron অ্যাপ্লিকেশনের বিতরণ প্রক্রিয়া সহজ করে তোলে।
এভাবে আপনি আপনার Electron অ্যাপ্লিকেশনটির জন্য একাধিক প্ল্যাটফর্মে ইনস্টলার তৈরি করতে পারবেন।
Electron অ্যাপ্লিকেশনে Icon এবং Splash Screen যোগ করা একটি গুরুত্বপূর্ণ কাস্টমাইজেশন, যা অ্যাপের ব্র্যান্ডিং এবং ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে। এই টিউটোরিয়ালে আপনি শিখবেন কিভাবে Electron অ্যাপ্লিকেশনে Icon এবং Splash Screen যোগ করবেন।
১. Electron অ্যাপের জন্য Icon যোগ করা
আপনার Electron অ্যাপ্লিকেশনের জন্য আইকন নির্ধারণ করা খুবই গুরুত্বপূর্ণ, কারণ এটি অ্যাপের ব্র্যান্ডিং এবং ইউজার অভিজ্ঞতা উন্নত করতে সহায়ক।
১.১. App Icon সেট করা
আপনি Main Process-এ BrowserWindow কনফিগারেশনে icon প্রোপার্টি ব্যবহার করে অ্যাপের আইকন সেট করতে পারেন।
উদাহরণ: Main Process - main.js
const { app, BrowserWindow } = require('electron');
const path = require('path');
let mainWindow;
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
icon: path.join(__dirname, 'assets/icons/app-icon.png'), // আইকনের পাথ
webPreferences: {
nodeIntegration: true
},
});
mainWindow.loadFile('index.html');
});
এখানে:
iconপ্রোপার্টির মাধ্যমেBrowserWindowএর আইকন সেট করা হয়।path.join(__dirname, 'assets/icons/app-icon.png')এর মাধ্যমে আইকনের ফাইল পাথ সঠিকভাবে নির্ধারণ করা হয়।
১.২. আইকনের পছন্দসই আকার
আইকন ফাইলটি বিভিন্ন আকারে তৈরি করা উচিত, যেমন:
- 32x32 px: সাধারণ আইকন আকার।
- 128x128 px: ম্যাক এবং উইন্ডোজে বড় আইকন হিসেবে ব্যবহৃত।
- 256x256 px: অ্যাপের জন্য উচ্চ রেজোলিউশন আইকন।
এটি Mac, Windows, এবং Linux এর জন্য আইকনের সর্বোত্তম অভিজ্ঞতা নিশ্চিত করে।
২. Splash Screen (স্টার্টআপ স্ক্রীন) যোগ করা
Splash Screen একটি স্টার্টআপ স্ক্রীন যা অ্যাপ্লিকেশন লোড হওয়ার সময় প্রথমে প্রদর্শিত হয় এবং মূল অ্যাপ্লিকেশন লোড হওয়ার পরে বন্ধ হয়ে যায়। এটি অ্যাপ্লিকেশনটির ইউজার অভিজ্ঞতা উন্নত করে এবং লোডিং সময়ের জন্য ব্যবহারকারীর দৃষ্টি আকর্ষণ করে।
২.১. Splash Screen তৈরি করা
Splash Screen যোগ করতে BrowserWindow এর সাথে show: false এবং ready-to-show ইভেন্ট ব্যবহার করা হয়। এই ইভেন্টটি ট্রিগার হওয়ার পর উইন্ডোটি প্রদর্শিত হয়।
উদাহরণ: Main Process - main.js (Splash Screen)
const { app, BrowserWindow } = require('electron');
const path = require('path');
let mainWindow;
let splashWindow;
app.on('ready', () => {
// Splash Screen তৈরি করা
splashWindow = new BrowserWindow({
width: 400,
height: 300,
frame: false,
alwaysOnTop: true,
transparent: true,
resizable: false,
icon: path.join(__dirname, 'assets/icons/splash-icon.png')
});
splashWindow.loadFile('splash.html'); // splash screen এর HTML লোড করা
// মূল অ্যাপ্লিকেশন লোড করা
mainWindow = new BrowserWindow({
width: 800,
height: 600,
icon: path.join(__dirname, 'assets/icons/app-icon.png'),
webPreferences: {
nodeIntegration: true
},
});
mainWindow.loadFile('index.html'); // মূল অ্যাপ্লিকেশনের HTML লোড করা
// Splash Screen বন্ধ করা যখন অ্যাপ্লিকেশন রেডি
mainWindow.once('ready-to-show', () => {
splashWindow.close(); // Splash screen বন্ধ
mainWindow.show(); // মূল উইন্ডো প্রদর্শন
});
});
Splash Screen HTML (splash.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Splash Screen</title>
<style>
body {
margin: 0;
padding: 0;
background: url('assets/images/splash-bg.png') no-repeat center center;
background-size: cover;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<h1 style="color: white; text-align: center; position: absolute; bottom: 20px; width: 100%;">Loading...</h1>
</body>
</html>
splashWindow: এটি প্রথমে একটি transparent এবং frameless উইন্ডো তৈরি করে।mainWindow.once('ready-to-show'): এই ইভেন্টটি যখন ট্রিগার হয়, তখন Splash Screen বন্ধ হয়ে যাবে এবং মূল অ্যাপ্লিকেশন উইন্ডো প্রদর্শিত হবে।
৩. Splash Screen এবং Icon কাস্টমাইজেশন
- Splash Screen এর জন্য আপনি নিজের মতো কাস্টম ডিজাইন করতে পারেন যেমন একটি লোগো বা লোডিং বার।
- Icon কাস্টমাইজ করতে হলে আপনাকে বিভিন্ন আকারের আইকন ফাইল তৈরি করতে হবে, যেমন 32x32 px, 128x128 px, এবং 256x256 px আইকন ফাইল।
উদাহরণ: Icon এবং Splash Screen কাস্টমাইজেশন
- Icon: 32x32 px, 128x128 px, এবং 256x256 px আকারের আইকন তৈরি করুন এবং যথাযথ স্থানে রাখুন।
- Splash Screen: Splash Screen এর জন্য একটি সুন্দর লোগো এবং লোডিং বার ডিজাইন করুন।
৪. Electron Build Configuration for Icons
আপনার Electron অ্যাপ্লিকেশনটি প্যাকেজ করার সময় (যেমন macOS, Windows, Linux), Electron Builder ব্যবহার করলে আপনি অ্যাপের আইকন এবং Splash Screen কনফিগারেশন যুক্ত করতে পারেন।
package.json-এ কনফিগারেশন যোগ করা
{
"name": "my-electron-app",
"version": "1.0.0",
"build": {
"appId": "com.example.myapp",
"mac": {
"icon": "assets/icons/app-icon.icns",
"target": "dmg"
},
"win": {
"icon": "assets/icons/app-icon.ico",
"target": "nsis"
}
},
"dependencies": {
"electron": "^25.0.0"
}
}
এখানে:
mac.iconএবংwin.iconব্যবহার করে আপনার আইকনের পাথ উল্লেখ করতে হবে।assets/icons/app-icon.icnsএবংassets/icons/app-icon.icoফাইলগুলি আপনার অ্যাপের জন্য আইকন ফাইল হবে, যা macOS এবং Windows প্ল্যাটফর্মে ব্যবহৃত হবে।
সারাংশ
- Icon এবং Splash Screen অ্যাপ্লিকেশনের প্রথম ইমপ্রেশন তৈরি করতে সাহায্য করে।
BrowserWindowকনফিগারেশন ব্যবহার করে অ্যাপের আইকন এবং Splash Screen যোগ করা যায়।- Electron Builder ব্যবহার করে আইকন এবং Splash Screen প্যাকেজিং প্রক্রিয়ায় অন্তর্ভুক্ত করা সম্ভব।
- Splash Screen উইন্ডো লোডিং সম্পূর্ণ হওয়ার পর মূল অ্যাপ্লিকেশন উইন্ডো প্রদর্শন করা হয়।
এভাবে, আপনি আপনার Electron অ্যাপ্লিকেশনকে আরও প্রফেশনাল এবং ব্যবহারকারীর জন্য আকর্ষণীয় করতে পারবেন।
Electron অ্যাপ্লিকেশনগুলি ডেস্কটপ অ্যাপ্লিকেশন হিসেবে ব্যবহারকারীকে ওয়েব প্রযুক্তি (HTML, CSS, JavaScript) দ্বারা তৈরি করে একটি ওয়েব ব্রাউজারের অভ্যন্তরে রান করতে সক্ষম হয়। তবে, এই সুবিধা এবং মাল্টিপ্ল্যাটফর্ম সক্ষমতা থাকা সত্ত্বেও, Electron অ্যাপ্লিকেশনগুলির সিকিউরিটি সম্পর্কে কিছু গুরুত্বপূর্ণ বিষয় থাকতে পারে, বিশেষ করে অ্যাপ্লিকেশনটি প্যাকেজ এবং ডিস্ট্রিবিউট করার সময়।
এখানে, Electron অ্যাপ্লিকেশন প্যাকেজিংয়ের সময় কিছু সিকিউরিটি কনসিডারেশন সম্পর্কে বিস্তারিত আলোচনা করা হবে, যা আপনাকে আপনার অ্যাপ্লিকেশনটি নিরাপদ রাখতে সাহায্য করবে।
১. কাস্টম স্ক্রিপ্ট রিভিউ এবং সুরক্ষা
Electron অ্যাপ্লিকেশনগুলো JavaScript ব্যবহার করে তৈরি হয়, যা একটি দুর্বল পয়েন্ট হতে পারে যদি আপনি সঠিকভাবে স্ক্রিপ্টগুলিকে সুরক্ষিত না করেন। অ্যাপ্লিকেশন প্যাকেজ করার আগে নিশ্চিত করুন যে আপনার স্ক্রিপ্টগুলো সঠিকভাবে রিভিউ করা হয়েছে এবং সেখানে কোনও নিরাপত্তা ত্রুটি বা অপব্যবহারযোগ্য কোড নেই।
- WebView: অ্যাপ্লিকেশনে যদি WebView ব্যবহার করেন (যেমন,
<webview>ট্যাগ), তবে সঠিকভাবেnodeIntegrationনিষ্ক্রিয় করুন, কারণ এটি কোড ইনজেকশন বা অজানা স্ক্রিপ্ট চালানোর জন্য সুযোগ দিতে পারে।
উদাহরণ: nodeIntegration: false
let mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false, // Node.js ইন্টিগ্রেশন বন্ধ
contextIsolation: true, // সম্পূর্ণ পৃথক প্রসেস
preload: path.join(__dirname, 'preload.js') // নিরাপদে API প্রদান
}
});
কেন?: nodeIntegration: false নিশ্চিত করবে যে Renderer Process এ Node.js এর API ব্যবহার করা যাবে না, ফলে কোড ইনজেকশন বা অপব্যবহার কম হবে।
২. Content Security Policy (CSP)
CSP একটি ওয়েব সিকিউরিটি ফিচার যা ইনজেক্টেড স্ক্রিপ্ট এবং অ্যাটাক কৌশলগুলি প্রতিরোধ করে। Electron অ্যাপ্লিকেশনগুলির জন্য CSP ব্যবহার করা গুরুত্বপূর্ণ, বিশেষ করে অ্যাপ্লিকেশন যদি ওয়েব কনটেন্ট প্রদর্শন করে (যেমন, <iframe> বা WebView ব্যবহার করলে)।
উদাহরণ: Content Security Policy
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; object-src 'none';">
</head>
এটি আপনার অ্যাপ্লিকেশনটি শুধুমাত্র নিজস্ব স্ক্রিপ্ট এবং সাইট থেকে স্ক্রিপ্ট লোড করতে বাধ্য করবে এবং বাইরের স্ক্রিপ্ট বা ইনজেকশন প্রতিরোধ করবে।
৩. অপ্রয়োজনীয় Node.js মডিউল নিষ্ক্রিয় করা
Electron অ্যাপ্লিকেশন তৈরি করার সময় অনেক ক্ষেত্রে কিছু Node.js মডিউল অ্যাপ্লিকেশনে সংযুক্ত থাকে, যা নিরাপত্তার জন্য বিপজ্জনক হতে পারে। উদাহরণস্বরূপ, fs (ফাইল সিস্টেম) মডিউল যদি Renderer Process এ অ্যাক্সেসযোগ্য হয়, তবে এটি আক্রমণকারীদের জন্য ঝুঁকি তৈরি করতে পারে।
উদাহরণ: Preload স্ক্রিপ্ট ব্যবহার করে নিরাপদ API প্রদান
// preload.js
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('secureAPI', {
readFile: (filePath) => ipcRenderer.invoke('read-file', filePath)
});
এখানে contextBridge এবং ipcRenderer ব্যবহার করে নিরাপদ API প্রদান করা হচ্ছে যা ফাইল সিস্টেমের অ্যাক্সেস বা অন্যান্য সিস্টেম অ্যাক্সেস সুরক্ষিতভাবে করা যায়।
৪. Electron অ্যাপ্লিকেশন সাইনিং এবং অটোমেটিক আপডেট
Electron অ্যাপ্লিকেশনগুলো যখন প্যাকেজ করা হয় এবং ডিস্ট্রিবিউট করা হয়, তখন সেগুলিকে সাইনিং করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষত Windows এবং macOS-এর জন্য।
Windows এ সাইনিং:
- Windows এ অ্যাপ্লিকেশন সাইন করার জন্য CodeSign ব্যবহার করা হয়। এটি ইউজারের সিস্টেমে আপনার অ্যাপ্লিকেশনটিকে বৈধ বলে চিহ্নিত করে, যা অ্যাপ্লিকেশন ইনস্টলেশনের সময় নিরাপত্তা সতর্কতা কমিয়ে দেয়।
macOS এ সাইনিং:
- macOS এ Electron অ্যাপ্লিকেশন সাইন করতে Apple Developer ID এবং Notarization প্রয়োজন। এটি Apple-এর সিকিউরিটি সিস্টেমের অংশ হিসেবে কাজ করে এবং অপ্রমাণিত অ্যাপ্লিকেশনগুলির বিরুদ্ধে সুরক্ষা দেয়।
উদাহরণ: Electron App Signing
electron-builder --mac --win --publish always --sign "Developer ID Application: Your Name (TEAMID)"
৫. অথেনটিকেশন এবং সেশন ম্যানেজমেন্ট
আপনার Electron অ্যাপ্লিকেশনে শক্তিশালী অথেনটিকেশন ব্যবস্থা নিশ্চিত করুন। অ্যাপ্লিকেশনগুলিতে লগিন এবং সেশন ম্যানেজমেন্টের জন্য সুরক্ষিত এবং শক্তিশালী প্রোটোকল (যেমন OAuth2, JWT) ব্যবহার করা উচিত।
- HTTPS: সবসময় HTTPS প্রোটোকল ব্যবহার করুন যাতে ইন-ট্রানজিট ডেটা সুরক্ষিত থাকে।
- CORS: Cross-Origin Resource Sharing (CORS) নীতির মাধ্যমে Cross-site স্ক্রিপ্টিং আক্রমণ (XSS) এড়ানো।
৬. Electron নিরাপত্তা ব্যবস্থাপনা টুলস
Electron এ কিছু নিরাপত্তা ব্যবস্থাপনা টুলস রয়েছে যা আপনাকে অ্যাপ্লিকেশনটি নিরাপদ করতে সহায়ক হতে পারে।
- Electron Security (Node.js): Electron অ্যাপ্লিকেশন থেকে Node.js এর অ্যাক্সেস সীমিত করতে nodeIntegration নিষ্ক্রিয় করুন।
contextIsolation: true: Renderer Process এবং Main Process এর মধ্যে বিভাজন স্থাপন করতে।
উদাহরণ: contextIsolation এবং sandbox ব্যবহার
let mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false, // Renderer Process এ Node.js অ্যাক্সেস নিষ্ক্রিয়
contextIsolation: true, // Renderer Process এর মধ্যে পৃথক পরিবেশ
sandbox: true, // নিরাপদ পরিবেশ প্রদান
}
});
৭. তথ্য এনক্রিপশন
এখনকার যুগে যে কোনও অ্যাপ্লিকেশনে গুরুত্বপূর্ণ তথ্য এবং ব্যবহারকারী ডেটা এনক্রিপশন করা অত্যন্ত গুরুত্বপূর্ণ। আপনি crypto বা bcrypt মডিউল ব্যবহার করে গুরুত্বপূর্ণ তথ্য এনক্রিপ্ট করতে পারেন, যেমন ব্যবহারকারীর পাসওয়ার্ড বা সেশনের তথ্য।
উদাহরণ: পাসওয়ার্ড এনক্রিপশন
const bcrypt = require('bcrypt');
const saltRounds = 10;
bcrypt.hash('yourpassword', saltRounds, (err, hash) => {
if (err) throw err;
console.log('Encrypted password:', hash);
});
সারাংশ
- Electron অ্যাপ্লিকেশন প্যাকেজিংয়ের সময় নিরাপত্তা একটি গুরুত্বপূর্ণ দিক। এটি নিশ্চিত করতে হবে যে অ্যাপ্লিকেশনে নিরাপত্তা সংক্রান্ত দুর্বলতা নেই।
- CSP (Content Security Policy), nodeIntegration নিষ্ক্রিয় করা, contextIsolation, sandbox ব্যবহার, এবং HTTPS প্রোটোকলসহ নিরাপত্তা ব্যবস্থাগুলি নিশ্চিত করতে হবে।
- Electron-updater এবং Code Signing ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন আপডেট এবং সিকিউর সাইনিং করা উচিত।
- তথ্য এনক্রিপশন এবং session management ও অত্যন্ত গুরুত্বপূর্ণ সিকিউরিটি ফিচার।
এভাবে, আপনি Electron অ্যাপ্লিকেশন প্যাকেজিংয়ের সময় সুরক্ষা নিশ্চিত করে একটি নিরাপদ ও বিশ্বস্ত অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more