# Signature de code — PMOptimizer Pro

> Index : [README.md](README.md)

Une signature **Authenticode** améliore la crédibilité auprès de Windows SmartScreen et des antivirus.

## Prérequis

- **Windows SDK** (outil `signtool.exe`)
- Certificat de signature de code :
  - **OV/EV** recommandé pour la production (SmartScreen)
  - Certificat auto-signé : tests locaux uniquement

## Signature rapide

### Variables d'environnement (recommandé)

```powershell
$env:PMOPT_SIGN_PFX = "C:\chemin\certificat.pfx"
$env:PMOPT_SIGN_PASSWORD = "votre_mot_de_passe"
.\scripts\Sign-PMOptimizer.ps1
```

### Paramètres explicites

```powershell
.\scripts\Sign-PMOptimizer.ps1 `
  -ExePath "dist\PMOptimizerProV1a.dist\PMOptimizerProV1a.exe" `
  -PfxPath "C:\certs\code.pfx" `
  -Password "secret"
```

### Après compilation

Le script `Compilation_Projet_ONE_DIR_v4.bat` appelle automatiquement la signature si `PMOPT_SIGN_PFX` est défini.

## Vérification

```bat
signtool verify /pa /v dist\PMOptimizerProV1a.dist\PMOptimizerProV1a.exe
```

Propriétés du fichier → onglet **Signatures numériques**.

## Checksum PE

L'étape 10 du build exécute `fix_pe_checksum.py` (réduit certains faux positifs AV). La signature doit être faite **après** cette étape.

## Version affichée

La version sémantique est définie dans `pmoptimizer/core/version.py` (ex. `1.2.0`). Incrémentez selon [SemVer](https://semver.org/) :

| Changement | Exemple |
|------------|---------|
| Correctifs | 1.2.0 → 1.2.1 |
| Fonctionnalités | 1.2.1 → 1.3.0 |
| Cassant | 1.3.0 → 2.0.0 |

## Tests avant release

```bat
pip install -r requirements-dev.txt
scripts\Lancer-Tests.bat
```

## Sans certificat payant

1. Checksum PE (déjà dans le build)
2. Soumission [VirusTotal](https://www.virustotal.com/) pour analyse communautaire
3. Réputation SmartScreen : volume de téléchargements au fil du temps

---

*PMOptimizer Pro est un logiciel gratuit ; responsabilité et contact plantage — [RESPONSABILITE_ET_SUPPORT.md](RESPONSABILITE_ET_SUPPORT.md)*
