# TcmbKur (Logo ERP) — Müşteri Kurulum Kılavuzu

TcmbKur, **Logo ERP için** TCMB günlük döviz kurlarını indirip Logo kur tablolarına yazan, girilip
girilmediğini denetleyen ve e-posta ile raporlayan bir Windows servisidir.

Lisans doğrulaması **ErpLic** üzerinden yapılır (`https://lisans.erp.tr`). Uygulama ilk çalıştığında
bu makine için kalıcı kurulum kimliğini kendisi üretir ve lisans merkezinde **Bekliyor** durumuna
düşer; elle ürün API anahtarı girilmez. Lisans yalnız **Logo'ya kur yazımını** kapılar
(modül `TCMBKUR.LOGO.001`): lisans süresi dolduğunda kur yazımı durur, **e-posta ve raporlar
çalışmaya devam eder** ve panel uyarı gösterir.

Yönetim paneli yalnız bu makineden (`http://127.0.0.1:<port>`) açılır; internet üzerinden erişim yoktur.

---

## 1. Gereksinimler

| Konu | Gereksinim |
|---|---|
| İşletim sistemi | Windows 10/11 veya Windows Server 2016+ (64 bit), **yönetici** hesabı |
| .NET | **Gerekmez** — paket kendi çalışma zamanını içerir (self-contained win-x64) |
| SQL Server | Logo ERP'nin kullandığı örnek erişilebilir olmalı (kurulum makineyi tarar; farklı sunucu ise kurulum ekranından yazılır) |
| Logo ERP | Kur yazılacak Logo veritabanı ve firma(lar)a erişim |
| Veritabanı | **Ayrı bir veritabanı gerekmez** — 1.5.0'dan itibaren uygulamanın kendi tabloları müşterinin Logo veritabanında `dbo.TCMBKUR_*` adıyla durur |
| İnternet | `https://www.tcmb.gov.tr` (kur verisi) · `https://lisans.erp.tr` **443** (kurulum kaydı ve lisans doğrulama) |

> İnternet erişimi kalıcı olmak zorunda değildir — bkz. [§7 Lisans sunucusuna ulaşılamıyorsa](#7-sorun-giderme).

---

## 2. Kurulum (tek dosya, ~5 dakika)

> **1.5.3 ile değişti — tek dosya.** Kurulum artık `TcmbKurKurulum.exe` adında **tek bir dosyadır**:
> zip açmak, PowerShell çalıştırmak, dosyanın "engelini kaldırmak" (*Unblock*) ya da çalıştırma
> ilkesini (*ExecutionPolicy*) değiştirmek gerekmez. Uygulama, güncelleyici ve kurulum mantığı bu
> dosyanın içindedir.

> **1.5.0 ile değişti — ayrı veritabanı yok.** Kurulum `TcmbKur` adında ikinci bir veritabanı
> **yaratmaz**. Uygulamanın kendi tabloları (ayarlar, kullanıcılar, kur arşivi, çalışma kayıtları,
> loglar) müşterinin **Logo veritabanının içinde** `dbo.TCMBKUR_*` adıyla durur. Böylece yedekleme
> tek veritabanıyla yapılır ve kur yazımı ile ayarlar aynı yedekten birlikte döner.

### 2.1 Üç adımda kurulum

1. **İndirin.** `TcmbKurKurulum.exe` — ürün sayfasından (bkz. [§8](#8-ürün-sayfası-ve-indirme)).
2. **Çift tıklayın.**
   - Windows **"Bilgisayarınız korundu"** (SmartScreen) uyarısı gösterirse: **Daha fazla bilgi →
     Yine de çalıştır**. Bu uyarı, dosya henüz yeterince yaygın indirilmediği için çıkar; virüs
     bildirimi değildir. Emin olmak için dosyanın SHA-256 özetini ürün sayfasındakiyle
     karşılaştırabilirsiniz:
     ```powershell
     Get-FileHash .\TcmbKurKurulum.exe -Algorithm SHA256
     ```
   - **Kullanıcı Hesabı Denetimi (UAC)** → **Evet**. Kurulum yönetici hakkı ister; servis kurmak,
     port açmak ve `C:\ERP` altına yazmak için gereklidir.
3. **Bekleyin.** Kurulum sırasıyla: dosyaları **seçtiğiniz klasöre** açar (ürün bu makinede zaten
   kuruluysa **mevcut klasör** önerilir; ilk kurulumda `C:\ERP\TcmbKur`) → **5230'dan itibaren ilk
   boş portu** (5230–5299) seçer → **`ERP TcmbKur`** servisini kurar ve başlatır → **otomatik
   güncellemeyi** kurar (`%ProgramData%\ErpUpdate\TCMBKUR` + günlük **`ERP Update TCMBKUR`** görevi,
   bkz. [§5](#5-güncelleme)) → `/healthz` sağlık kapısından geçer → **tarayıcıyı kendiliğinden açar**.

Kurulum hiçbir adımda soru sormaz ve **Logo/SQL bilgisi istemez** — servis, veritabanı bilgisi
olmadan da açılır ve sizi doğrudan kurulum ekranına götürür.

### 2.2 Kurulum ekranı — üç adım

Tarayıcıda açılan ekran üç adımdır ve bulabildiklerini sizin için **önceden işaretler**; çoğu
kurulumda yalnızca **İleri → İleri → Kur ve başlat** dersiniz.

| Adım | Ne sorar | Otomatik olan |
|---|---|---|
| **1. Logo klasörü** | Logo'nun kurulu olduğu klasör (içinde `LOGODB.CFG` bulunur) | Kayıt defterindeki **LOBJECTS.EXE** COM kaydından ve olağan yollardan bulunur; tek aday varsa doldurulur |
| **2. Veritabanı** | Kur yazılacak Logo veritabanı | Makinedeki SQL Server örnekleri taranır, Logo veritabanları `SUNUCU → TIGER3 (2 firma, 3 kur tablosu)` biçiminde listelenir; tek aday varsa seçilir |
| **3. Kurulum** | — (yalnız özet) | **Kur ve başlat**: bağlantı sınanır, SQL yetkisi verilir, tablolar oluşturulur, ayar dosyası yazılır, servis başlatılır |

- **Logo klasörü zorunlu değildir** — boş bırakırsanız kurulum devam eder, yalnız uyarı gösterilir.
- **Veritabanı listede yoksa** ("Listede yok / başka bir sunucu"): sunucu adını (ör. `.\SQLEXPRESS`
  veya `10.31.18.133`) ve veritabanı adını yazarsınız. Logo **ayrı bir sunucudaysa** makine hesabı
  orada tanımlı olmayabilir (`Login failed for user 'ALANADI\kullanici'`); bu durumda **Kimlik
  doğrulama → SQL Server kullanıcısı** seçilip kullanıcı adı/parola girilir. Parola ayar dosyasına
  düz metin yazılmaz: **makine kapsamlı DPAPI** ile şifrelenip `enc:` önekiyle saklanır.
- **Gelişmiş** bölümünde servis durumu, Kur/Başlat/Durdur/Yeniden Başlat/Kaldır düğmeleri ve ham
  günlük bulunur. Bir hata olursa bu bölüm kendiliğinden açılır.
- *Not:* Logo klasöründeki `LOGODB.CFG` **şifrelidir** — klasör bulunabilir ama SQL sunucusu /
  veritabanı oradan okunamaz; bu yüzden taranır ya da sorulur.

Kurulum ekranı daha sonra da açılabilir: `http://127.0.0.1:<port>/setup/index.html`.

### 2.3 İlk giriş

**admin / admin** → ilk girişte yeni parola istenir. Ardından **§3 ayar sihirbazı** ile Logo firmaları, kur çekme saati, e-posta ve lisans ayarlanır.

### 2.4 Gözetimsiz / parametreli kurulum (yönetici PowerShell)

Kurulum dosyası parametre de kabul eder:

```powershell
.\TcmbKurKurulum.exe --yardim
.\TcmbKurKurulum.exe --klasor D:\ERP\TcmbKur --port 5300
.\TcmbKurKurulum.exe --sessiz --tarayici-yok           # soru sormaz, tarayıcı açmaz
```

| Parametre | Anlamı |
|---|---|
| `--klasor <yol>` (`--hedef`, `-k`) | Kurulum klasörü (varsayılan: **mevcut kurulum**; yoksa `C:\ERP\TcmbKur`) |
| `--servis <ad>` (`-s`) | Windows servis adı (varsayılan `ERP TcmbKur`) |
| `--port <no>` (`-p`) | Sabit port (varsayılan: 5230'dan itibaren ilk boş port) |
| `--guncelleme-saati <ss:dd>` | Günlük güncelleme görevinin saati (varsayılan `03:20`) |
| `--sessiz` (`-q`) | Soru sormaz, bekletmez |
| `--tarayici-yok` | Kurulum bitince tarayıcı açmaz |
| `--guncelleyici-yok` | Otomatik güncelleme görevini kurmaz |

### 2.5 Destek yolu — zip + `install.ps1`

Tek dosyalık kurulum kullanılamıyorsa (ör. kurum politikası imzasız exe'yi engelliyorsa) aynı paket
`TcmbKur-Logo-<sürüm>-win-x64.zip` olarak da yayımlanır: zip'i açın, **`install.ps1`** üzerinde sağ
tık → **PowerShell ile çalıştır** (ya da
`powershell -ExecutionPolicy Bypass -File .\install.ps1`). Betik aynı işi yapar ve aynı kurulum
ekranını açar; ek olarak `-TargetDir`, `-SqlServer`, `-LogoDb`, `-SqlUser`, `-Sessiz` parametrelerini
kabul eder. İnternetten inen zip'in içindeki `.ps1` dosyaları **engelli** gelebilir; gerekirse:

```powershell
Get-ChildItem .\*.ps1 | Unblock-File
```

> `-AppDb` parametresi **kaldırıldı** (1.5.0). Eskiden ayrı uygulama veritabanının adını veriyordu;
> artık böyle bir veritabanı yok.

---

## 3. Ayar sihirbazı (`http://127.0.0.1:<port>/kurulum`)

> Bu, [§2.2](#22-kurulum-ekrani--uc-adim)'deki **kurulum ekranından farklıdır**: orası servis daha
> yapılandırılmamışken Logo klasörü ve veritabanını sorar; burası servis çalışır durumdayken
> firmaları, kur çekme saatini, e-postayı ve lisansı ayarlar (giriş gerektirir).

Sihirbaz **6 adımdır**. `/kurulum` adresi 1. adımdan başlar; `/ayarlar` doğrudan 2. adıma girer.

### 1) Windows servisi
Veri girilmez. Servis durumu ve **Kur · Başlat · Durdur · Yeniden Başlat · Kaldır** düğmeleri ile
dinlenen adres görünür.

### 2) Logo bağlantısı
- **Logo klasörü** — *Gözat* / *Algıla* ile seçilir.
- **Logo SQL bağlantısı** — Sunucu, Port, Veritabanı, Kimlik doğrulama (Windows/SQL), Encrypt,
  TrustServerCertificate, Timeout. **Logo veritabanlarını bul** ile DB listeden seçilir.
- **Bağlantıyı Test Et** → **Firmaları keşfet** → kur yazılacak firmalar işaretlenir → **Kaydet**.

### 3) Kur çekme
Hedef gün, bülten kuralı, "TCMB ilanından (15:30) önce yazma", zamanlama (Günlük/Aralık) ve saat,
geriye bakılacak gün sayısı, yazım seçenekleri (`L_DAILYEXCHANGES`, `APPROVE=1`, güncelle, birime böl),
**RATES1–4 ↔ DA/DS/EA/ES** eşleştirmesi ve para birimleri → **Kaydet**.

### 4) E-posta (SMTP)
SMTP sunucusu/port/gönderen/kullanıcı/parola/SSL, rapor alıcıları, konu şablonu, xlsx/csv eki,
kontrol raporu ayarları → **Test e-postası** → **Kaydet**.

### 5) Lisans  ← *bu adım kuruluma özeldir, atlanmamalı*
Kart başlığı: **"Lisans ve deneme sürümü"**. Uygulama ilk açılışta kurulum kaydını otomatik oluşturur:

- Kurulum kimliği, makine adı ve ürün bilgisi `https://lisans.erp.tr` yönetimine **Bekliyor** olarak düşer.
- Ekranda kısa kod ve karekod görünür; bu bilgi yalnız kaydı bulmak içindir, lisans yetkisi değildir.
- ERP tarafı müşteriyle anlaşılmış lisansı merkezden bu kuruluma atar.
- **Durumu yenile** düğmesi son lisans durumunu tekrar sorar. Lisans atandıysa durum kartında ürün,
  modül, başlangıç/bitiş ve kalan haklar görünür.
- Lisans atanmadan Logo'ya kur yazımı yapılmaz; arşivleme, rapor ve e-posta ayarları yine
  tamamlanabilir.
- **Teklif al** düğmesi ürün sayfasını açar: `https://tcmbkur.erp.tr`.

#### İnternete çıkamayan sunucu (çevrimdışı lisans)

Sunucu `lisans.erp.tr` adresine hiç ulaşamıyorsa lisans **dosya ile** kurulur; aynı kart üzerindeki
**Çevrimdışı lisans** bölümü kullanılır:

1. **Cihaz bilgi dosyasını indir** düğmesi `TCMBKUR-<makine>.lisans-istek` dosyasını üretir. Sunucuda
   tarayıcı yoksa aynı dosya komut satırından da üretilir (uygulama klasöründe):

   ```powershell
   .\TcmbKur.App.exe lisans-istek
   .\TcmbKur.App.exe lisans-istek D:\gecici
   ```

   Klasör verilmezse dosya uygulamanın kendi klasörüne yazılır. Komut veritabanı bağlantısı
   gerektirmez; kurulum yarım kalmışken de çalışır.
2. Dosya e-posta/USB ile lisans temsilcinize iletilir. Dosya **sır taşımaz**; imzasız düz metindir.
3. ERP tarafı karşılığında `*.erplic` lisans dosyası gönderir. Bu dosya **yalnız o makinede**
   geçerlidir; başka sunucuya kopyalanamaz.
4. Gelen dosya aynı bölümden **yüklenir**; kabul edildiğinde kurulum çevrimdışı çalışmaya başlar.

Dosyanın ömrü dolmaya yaklaştığında ekranda sarı uyarı şeridi çıkar (bitiş tarihi + kalan gün).
Uyarıyı gördüğünüzde yeni cihaz bilgi dosyasını üretip iletin — dosya postayla gidip geldiği için
son güne bırakılmamalıdır.

### 6) Özet & bitir
10 maddelik kontrol listesi (servis, veritabanı, Logo bağlantısı/klasörü/firmaları, zamanlama,
RATES eşleşmesi, kontrol raporu, lisans, e-posta) ve tek eylem: **İlk çekimi yap**.

Günlük kurlar her sabah ayarlanan saatte otomatik yazılır; **Kurlar** ve **Çalışmalar** sayfalarından
izlenir; hatalı bir yazım **Çalışmalar → Geri al** ile geri alınır.

---

## 4. Servis yönetimi, sağlık ve loglar

| Konu | Değer |
|---|---|
| Servis adı | **`ERP TcmbKur`** (görünen ad: `ERP TcmbKur - Logo ERP TCMB Kur Servisi`) |
| Servis hesabı | `LocalSystem` (`NT AUTHORITY\SYSTEM`) |
| Kurulum klasörü | `C:\ERP\TcmbKur` (ilk kurulumun varsayılanı; sonraki kurulumlar mevcut klasörü kullanır) |
| Port | Varsayılan **5230**; doluysa 5230–5299 arası ilk boş port |
| Gerçek adres | `C:\ERP\TcmbKur\listen-url.txt` |
| Sağlık | `GET http://127.0.0.1:<port>/healthz` → `status=ok`, `db=ok`, `version=<paket sürümü>` |
| Log dosyaları | `C:\ERP\TcmbKur\logs\tcmbkur-<tarih>.log` (günlük, 14 dosya saklanır) |
| Veritabanı | Müşterinin **Logo veritabanı**; uygulamanın tabloları `dbo.TCMBKUR_*` (ayarlar `dbo.TCMBKUR_Config`) |
| Sır anahtarları | `C:\ERP\TcmbKur\keys` |

Servis komutları (yönetici PowerShell):
```powershell
Get-Service 'ERP TcmbKur'
Restart-Service 'ERP TcmbKur'
Invoke-RestMethod http://127.0.0.1:5230/healthz
```

### Yedekleme — iki şeyi birden yedekleyin
1. **Logo veritabanı** — ayarlar, kur geçmişi ve çalışma kayıtları `dbo.TCMBKUR_*` tablolarında,
   yani Logo verisiyle **aynı** veritabanında. Zaten aldığınız Logo yedeği bunları da kapsar.
2. **`C:\ERP\TcmbKur\keys` klasörü** — ⚠ SMTP parolası ve lisans anahtarları bu anahtarlarla
   çözülür. Klasör kaybolursa uygulama çökmez ama **bu sırlar sessizce "tanımsız" olur** ve
   yeniden girilmeleri gerekir.

---

## 5. Güncelleme

**1.3.0 sürümünden itibaren TcmbKur kendini günceller.** Kurulum, uygulamanın **dışında** yaşayan bir
güncelleme uygulayıcısı kurar ve günlük çalıştırır. Bu sürüme geçiş (1.2.x → 1.3.0) elle yapılan
**son** güncellemedir; sonrakiler kendiliğinden gelir.

### 5.1 Otomatik güncelleme (varsayılan)

| Konu | Değer |
|---|---|
| Zamanlanmış görev | **`ERP Update TCMBKUR`** — her gün **03:20**, `NT AUTHORITY\SYSTEM` hesabıyla |
| Uygulayıcı klasörü | `C:\ProgramData\ErpUpdate\TCMBKUR` (uygulama klasörünün **dışında**) |
| Kaynak | `https://lisans.erp.tr` — imzalı sürüm bildirimi; paket `https://tcmbkur.erp.tr` üzerinden iner |
| Log | `C:\ProgramData\ErpUpdate\TCMBKUR\logs` |

Bir koşu şu adımlardan geçer: **imzalı** sürüm bildirimi alınır (imza doğrulanamazsa hiçbir şey
yapılmaz) → paket indirilir, **SHA-256 ve boyutu** doğrulanır → servis durdurulur, klasör yedeklenir,
takas edilir → servis başlatılır ve **sağlık kapısından** geçmesi beklenir (`/healthz` 200 **ve
sürüm = hedef sürüm**). Kapıdan geçemezse **önceki sürüme kendiliğinden dönülür**, bozuk paket
karantinaya alınır ve durum sunucuya bildirilir. Veritabanınız, ayarlarınız ve `keys\` klasörünüz
takasın dışındadır (bkz. aşağıdaki tablo).

Güncelleme **lisanstan bağımsızdır**: lisansı süresi dolmuş bir kurulum da güvenlik yamasını alır.

Kontrol (yönetici PowerShell):
```powershell
Get-ScheduledTask 'ERP Update TCMBKUR' | Get-ScheduledTaskInfo    # son ve sonraki koşu
Start-ScheduledTask 'ERP Update TCMBKUR'                          # beklemeden dene
Get-Content "$env:ProgramData\ErpUpdate\TCMBKUR\logs\*.log" -Tail 40
```

Saati değiştirmek için kurulumu `-UpdaterTime 04:30` ile yeniden çalıştırın. Görev kaldırıldığında
(`uninstall.ps1` bunu kendisi yapar) ürün çalışmaya devam eder, yalnız güncellenmez.

### 5.2 Elle güncelleme

Yeni sürüme gece beklemeden geçmek isterseniz veya kurulum `-SkipUpdater` ile yapıldıysa:

1. Ürün sayfasından yeni sürümün **`TcmbKurKurulum.exe`** dosyasını indirin
   (bkz. [§8](#8-ürün-sayfası-ve-indirme)).
2. Çift tıklayın (UAC → Evet). Servisi elle durdurmanız gerekmez; kurulum durdurur, dosyaları
   tazeler ve servisi **aynı portla** yeniden başlatır. Ayarlarınız korunur (aşağıdaki tablo).
   Destek yolu olarak zip + `install.ps1` de aynı işi yapar.

> ⚠ Dosya adında **`-noupdate`** geçen bir paket otomatik güncelleme **içermez**; böyle bir kurulumun
> her güncellemesi elle yapılır.

**Ne korunur, ne korunmaz** (elle kurulumda kopyalama `robocopy /E` iledir, `/MIR` **değildir** —
hedefte var olan hiçbir dosya silinmez; otomatik takas da aynı dışlama listesini uygular):

| Öğe | Durum |
|---|---|
| Logo veritabanındaki `dbo.TCMBKUR_*` tabloları ve **tüm ayarlar** | ✅ Korunur (tablolar yoksa oluşturulur, asla silinmez) |
| `appsettings.Production.json` (bağlantı dizesi) | ✅ Korunur (kopyalamadan dışlanır; sadece yoksa üretilir) |
| `keys\` (sır çözme anahtarları) | ✅ Korunur |
| `logs\` | ✅ Korunur |
| `listen-url.txt` | ✅ Korunur |
| **`appsettings.json`** | ⚠ **ÜZERİNE YAZILIR** |

> ⚠ **Önemli:** Elle yaptığınız yapılandırma değişikliklerini **`appsettings.json` içine yazmayın** —
> her güncellemede kaybolur. Bunun yerine **`appsettings.Production.json`** dosyasını kullanın; servis
> `--environment Production` ile koştuğu için bu dosya önceliklidir ve güncellemede korunur.

---

## 6. "Teklif al" adresi

Uygulamadaki **Teklif al** bağlantısının varsayılanı ürünün kendi adresidir:
`https://tcmbkur.erp.tr`.

Bu adres tanıtım, güncel paket, SHA-256 özeti ve kurulum kılavuzunu içerir. Normal kurulumda
`appsettings.Production.json` içine ayrıca `Lisans:TeklifUrl` yazmanız gerekmez.

---

## 7. Sorun giderme

| Belirti | Yapılacak |
|---|---|
| Panel açılmıyor | `services.msc` → `ERP TcmbKur` çalışıyor mu · `C:\ERP\TcmbKur\logs\tcmbkur-*.log` · `C:\ERP\TcmbKur\listen-url.txt` (gerçek port) |
| **`Error occurred during a cryptographic operation.`** | **Kimlik ikiliği / DPAPI kapsamı.** Aynı exe iki farklı Windows kimliğiyle koşar: servis `LocalSystem`, operatör konsolu (`TcmbKur.App.exe setup`) etkileşimli yönetici. Sırlar **makine kapsamlı** DPAPI ile korunur ve anahtar halkası `C:\ERP\TcmbKur\keys` altındadır. Bu klasör silindi/başka makineden kopyalandıysa eski sırlar çözülemez → SMTP parolasını ve lisans anahtarlarını **sihirbazdan yeniden girin**. Klasörün ACL'i `Administrators` + `SYSTEM` olmalıdır. |
| **Lisans: "koltuk dolu" / SeatLimit** | Lisans `MaxSeats = 1`'dir: aynı anda tek aktif kurulum. Önceki makinenin **kirası düşene kadar** (birkaç dakika) bekleyip **Durumu yenile**'ye basın. Eski kurulumun servisi durdurulmuş olmalıdır. Kalıcı taşımada eski cihaz ErpLic yönetiminden `Removed` işaretlenir. |
| **Lisans sunucusuna ulaşılamıyor** | **Uygulama KİLİTLENMEZ.** İmzalı grant önbelleği + **grace** süresi + çevrimdışı `.erplic` dosyası devrededir; internet kesikken kur yazımı çalışmaya devam eder. Kilit yalnız şu durumlarda olur: imzalı iptal, sürenin dolması, ya da grace + çevrimdışı hakkın tükenmesi. Kalıcı kesintide `lisans.erp.tr:443`'e giden güvenlik duvarı/proxy kuralını kontrol edin. |
| "Lisans ataması bekleniyor" | Sihirbaz → **Lisans** adımındaki kısa kodu ERP'ye iletin; lisans merkezden atandıktan sonra **Durumu yenile**'ye basın. |
| "Logo bağlantısı yapılandırılmamış" | Sihirbaz → **Logo bağlantısı** → Kaydet |
| Kur yazılmadı / atlandı | Çalışmalar → satır detayı (uyarılar, hata); Logo'da kur kodu `L_CURRENCYLIST`'te tanımlı mı |
| E-posta gitmiyor | Sihirbaz → **E-posta** → Test e-postası; Loglar |
| SQL yetki hatası (servis) | SSMS: `NT AUTHORITY\SYSTEM` → **Logo veritabanında** `db_owner` (uygulama kendi `dbo.TCMBKUR_*` tablolarını orada yaratır). Kurulum bu yetkiyi kendisi verir; veremediyse ekrana yazdığı SQL'i yetkili bir hesapla çalıştırıp kurulumu tekrarlayın. |
| Eski `TcmbKur` veritabanı ne olacak? | 1.5.0 onu **kullanmaz ve silmez**. İçindeki ayarlar/kullanıcılar taşınmaz — sihirbazdan yeniden girilir (temiz başlangıç). Yedeğini aldıktan sonra veritabanını elle kaldırabilirsiniz. |

### Yönetici parolasını unuttum
Yönetici PowerShell/CMD ile:
```powershell
cd C:\ERP\TcmbKur
.\TcmbKur.App.exe reset-admin
```
Ekrana yazılan **geçici parola** ile `admin` girişi yapılır, yeni parola istenir.
Farklı kullanıcı: `.\TcmbKur.App.exe reset-admin kullaniciadi` ·
belirli parola: `.\TcmbKur.App.exe reset-admin --password YeniParola`.

### Kaldırma
`uninstall.ps1` (sağ tık → PowerShell ile çalıştır): servisi kaldırır; **veritabanı ve ayarlar korunur**.
Yeniden kurmak için `TcmbKurKurulum.exe` dosyasını çift tıklamak yeterlidir.

> ⚠ `uninstall.ps1 -RemoveFiles` kurulum klasörünün tamamını siler — **`keys\` dâhil**. Bu durumda
> veritabanındaki şifreli sırlar (SMTP parolası, lisans anahtarları) bir daha çözülemez.
> Kaldırmadan önce `keys\` klasörünü yedekleyin.

---

## 8. Ürün sayfası ve indirme

Ürün sayfası: `https://tcmbkur.erp.tr` (tanıtım · kurulum · dokümantasyon)

Müşterinin indirdiği dosya **`TcmbKurKurulum.exe`**'dir (tek dosya; uygulama + güncelleyici
gömülüdür). Zip paketi destek/elle kurulum yolu olarak yayımlanmaya devam eder.

Güncel paket doğrudan şu adresten iner:
`https://tcmbkur.erp.tr/dl/logo-tcmb-kur`

Sürümü sabitlenmiş kalıcı adres:
`https://tcmbkur.erp.tr/dl/logo-tcmb-kur/1.5.3`

Kurulum kılavuzu:
`https://tcmbkur.erp.tr/dl/logo-tcmb-kur/kurulum-kilavuzu.md`
