Files
noteki/pyinstaller_guide.md
git_alhan 9f3a599b79 Initial commit: Noteki v1.0
- Modern sticky notes app for Windows
- PySide6 full-screen transparent canvas
- System tray integration, global Alt+N hotkey
- Session management, undo/redo, auto-save
- Custom color palette with dynamic contrast
- Pin notes always-on-top, Tab navigation
- Windows Named Mutex single-instance guard
2026-05-21 04:13:45 +03:00

65 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sticky Canvas — EXE Paketleme ve Windows Başlangıç Kılavuzu
Bu kılavuz, uygulamanızı tek bir `.exe` dosyası haline getirmeyi ve "Windows ile Birlikte Başlat" seçeneğinin arka planda nasıl çalıştığınııklar.
---
## 1. Uygulamayı Standart EXE Haline Getirme (PyInstaller)
Uygulamanızı tek bir dosya (`.exe`) haline getirmek için **PyInstaller** kütüphanesini kullanabilirsiniz.
### Adım 1: Gerekli Kütüphaneleri Yükleyin
PowerShell veya Komut İstemi'ni açıp şu komutları çalıştırın:
```bash
pip install pyinstaller pillow
```
*(Not: `pillow`, ikon dönüştürme için kullanılacaktır.)*
### Adım 2: PNG İkonunu ICO Formatına Dönüştürün
Windows, `.exe` dosyalarının masaüstü ve dosya gezgini ikonları için özel `.ico` formatını şart koşar. Aşağıdaki komutla mevcut `icon.png` dosyasını otomatik olarak `icon.ico` formatına dönüştürebilirsiniz:
```bash
python -c "from PIL import Image; Image.open('assets/icon.png').save('assets/icon.ico', format='ICO')"
```
Bu komut, `assets` klasörü altında `icon.ico` adında uyumlu bir Windows ikon dosyası oluşturacaktır.
### Adım 3: PyInstaller ile Paketleyin
Şimdi projeyi tek bir `.exe` olarak paketlemek için şu komutu çalıştırın:
```bash
pyinstaller --noconsole --onefile --icon="assets/icon.ico" --add-data "assets;assets" main.py
```
**Parametrelerin Anlamları:**
* `--noconsole`: Uygulama açıldığında arkada siyah bir komut satırı (CMD) penceresinin açılmasını engeller. Tamamen pürüzsüz bir arayüz sunar.
* `--onefile`: Tüm kaynakları, ikonları ve kütüphaneleri (PySide6 vb.) tek bir `.exe` dosyasında birleştirir.
* `--icon="assets/icon.ico"`: EXE dosyasının Windows üzerindeki resmi simgesini ayarlar.
* `--add-data "assets;assets"`: Uygulamanın kullandığı resim, ikon ve diğer varlıkları içeren `assets` klasörünü paket içerisine gömer.
### Adım 4: Sonuç
İşlem tamamlandığında, proje klasörünüzde iki yeni dizin oluşacaktır:
1. `build/` (Geçici derleme dosyaları)
2. `dist/` (Paketlenmiş nihai uygulamayı barındırır)
`dist/main.exe` dosyasını bulup adını `sticky_canvas.exe` veya istediğiniz gibi değiştirebilir, doğrudan çalıştırıp kullanmaya başlayabilirsiniz! `build` klasörünü ve `.spec` dosyasını güvenle silebilirsiniz.
---
## 2. "Windows ile Birlikte Başlat" Nasıl Çalışıyor?
Uygulamanın Ayarlar penceresindeki **"Windows ile birlikte başlat"** seçeneği, Windows işletim sisteminin yerleşik otomatik başlatma mekanizmasını kullanır.
### Arka Plandaki Çalışma Mekanizması:
1. **Windows Kayıt Defteri (Registry) Entegrasyonu:**
Windows, sistem açıldığında otomatik olarak çalıştırılması gereken programların listesini Registry üzerinde şu adreste tutar:
`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`
2. **Kayıt Ekleme (Aktif Edildiğinde):**
Bu ayar açıldığında, uygulamamız Registry'de bu dizinin altına `"Sticky Canvas"` adında yeni bir anahtar (String Value) ekler.
* **Geliştirici Modunda (Script):** Değer olarak Python yorumlayıcısının yolunu ve `main.py` dosyamızın tam yolunu yazar: `"[PYTHON_YOLU]\python.exe" "[PROJE_YOLU]\main.py"`
* **Paketlenmiş Modda (EXE):** Değer olarak doğrudan derlenmiş `.exe` dosyamızın tam yolunu yazar: `"[EXE_YOLU]\sticky_canvas.exe"`
3. **Kayıt Silme (Devre Dışı Bırakıldığında):**
Bu ayar kapatıldığında, uygulamamız Registry'deki `"Sticky Canvas"` anahtarını siler ve Windows açılışında otomatik başlama durdurulur.
4. **Kullanıcı Yetkisi:**
`HKEY_CURRENT_USER` (HKCU) kullanıldığı için bu işlem **Yönetici yetkisi (UAC / Administrator) gerektirmez.** Herhangi bir kullanıcı hesabı altında tamamen güvenli ve sorunsuz şekilde çalışır.