chore: Windows build, Inno Setup installer, MSIX support, README güncellemesi
Some checks failed
Build Windows / build-windows (push) Has been cancelled

- flutter build windows --release başarılı
- Inno Setup installer (dist/imajviewer_setup_1.0.0.exe)
- MSIX paketi mevcut (imzasız, Developer Mode gerekli)
- pubspec.yaml: msix_config eklendi
- .gitignore: dist/, *.pfx, *.cer, *.msix
- README.md: Windows kurulum seçenekleri güncellendi
This commit is contained in:
git_alhan
2026-07-27 16:53:03 +03:00
parent 99b1c8bbe8
commit 12e14a76f0
5 changed files with 220 additions and 7 deletions

6
.gitignore vendored
View File

@@ -43,3 +43,9 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release
# Windows installer output
/dist/
*.pfx
*.cer
*.msix

View File

@@ -46,14 +46,35 @@ rm -rf ~/.local/lib/imajviewer ~/.local/bin/imajviewer \
## Windows Kurulum
### Gereksinimler
### Seçenek 1 — Inno Setup Installer (Önerilen)
- [Flutter SDK](https://docs.flutter.dev/get-started/install/windows) (stable channel)
- Visual Studio 2022 (Desktop development with C++ iş yükü)
`dist/imajviewer_setup_1.0.0.exe` dosyasını çift tıklayarak kurun. Yönetici yetkisi ister.
### Derleme
Kurulum şunları yapar:
- Program Files altına kurulum
- Başlat menüsü kısayolu
- İsteğe bağlı masaüstü kısayolu
- Kayıt defterine dosya ilişkilendirmeleri (PNG, JPG, JPEG, WebP, BMP, GIF)
- Kaldırma desteği (Ayarlar > Uygulamalar)
Windows bilgisayarda:
### Seçenek 2 — MSIX Paketi
`build\windows\x64\runner\Release\imajviewer.msix` dosyasını PowerShell ile kurun:
```powershell
Add-AppxPackage -Path "build\windows\x64\runner\Release\imajviewer.msix"
```
> **Not:** MSIX imzalı değildir. Kurulum için Windows Developer Mode açık olmalıdır
> (Ayarlar > Geliştiriciler için > Geliştirici Modu).
### Seçenek 3 — Portable (Kendin Derle)
| Gereksinim | Açıklama |
|---|---|
| [Flutter SDK](https://docs.flutter.dev/get-started/install/windows) | stable channel |
| Visual Studio 2022 Build Tools | "Desktop development with C++" iş yükü |
| Windows Developer Mode | Ayarlar > Geliştiriciler için > Geliştirici Modu |
```powershell
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
@@ -62,7 +83,17 @@ flutter pub get
flutter build windows --release
```
Çıktı: `build/windows/x64/runner/Release/` dizini. `imajviewer.exe` ile birlikte tüm DLL'ler burada — dizini taşıyarak başka Windows makinelerde çalıştırabilirsiniz.
Çıktı: `build\windows\x64\runner\Release\` dizini. `imajviewer.exe` ile birlikte tüm DLL'ler burada — taşınabilir, başka makinelere kopyalanabilir.
### Installer'ı Yeniden Oluşturma
```powershell
flutter pub get
flutter build windows --release
"C:\Users\pc\AppData\Local\Programs\Inno Setup 6\ISCC.exe" windows\installer.iss
```
Çıktı: `dist\imajviewer_setup_1.0.0.exe`
## Geliştirme

View File

@@ -1,6 +1,22 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
url: "https://pub.dev"
source: hosted
version: "4.0.9"
args:
dependency: transitive
description:
name: args
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
url: "https://pub.dev"
source: hosted
version: "2.7.0"
async:
dependency: transitive
description:
@@ -25,6 +41,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.1"
cli_util:
dependency: transitive
description:
name: cli_util
sha256: "71e43f1976c3eae2d9468a5b4d6600bf8cae61508b87f27fa1799228935d48ab"
url: "https://pub.dev"
source: hosted
version: "0.5.2"
clock:
dependency: transitive
description:
@@ -41,6 +65,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.19.1"
console:
dependency: transitive
description:
name: console
sha256: e04e7824384c5b39389acdd6dc7d33f3efe6b232f6f16d7626f194f6a01ad69a
url: "https://pub.dev"
source: hosted
version: "4.1.0"
cross_file:
dependency: transitive
description:
@@ -112,6 +144,22 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
get_it:
dependency: transitive
description:
name: get_it
sha256: "568d62f0e68666fb5d95519743b3c24a34c7f19d834b0658c46e26d778461f66"
url: "https://pub.dev"
source: hosted
version: "9.2.1"
image:
dependency: transitive
description:
name: image
sha256: "6300175e00616bbc832e2fc91bfa4d776af5402c81c7151bee6905bb08473c52"
url: "https://pub.dev"
source: hosted
version: "4.9.1"
json_annotation:
dependency: transitive
description:
@@ -176,6 +224,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.18.0"
msix:
dependency: "direct main"
description:
name: msix
sha256: "61415c352e8aea084332b8a5514e6408c961c8cdeca202804fff1040eb555ac7"
url: "https://pub.dev"
source: hosted
version: "3.18.0"
package_config:
dependency: transitive
description:
name: package_config
sha256: ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d
url: "https://pub.dev"
source: hosted
version: "3.0.0"
path:
dependency: "direct main"
description:
@@ -184,6 +248,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
url: "https://pub.dev"
source: hosted
version: "7.0.2"
plugin_platform_interface:
dependency: transitive
description:
@@ -192,6 +264,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.8"
posix:
dependency: transitive
description:
name: posix
sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e
url: "https://pub.dev"
source: hosted
version: "6.5.2"
pub_semver:
dependency: transitive
description:
name: pub_semver
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
screen_retriever:
dependency: transitive
description:
@@ -333,6 +421,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.4.3"
xml:
dependency: transitive
description:
name: xml
sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
url: "https://pub.dev"
source: hosted
version: "7.0.1"
yaml:
dependency: transitive
description:
name: yaml
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev"
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.12.2 <4.0.0"
flutter: ">=3.38.0"

View File

@@ -1,8 +1,16 @@
name: imajviewer
description: "Ultra hafif Linux görüntü izleyici"
description: "Ultra hafif görüntü izleyici"
publish_to: 'none'
version: 1.0.0+1
msix_config:
display_name: ImajViewer
publisher_display_name: imajviewer
identity_name: imajviewer.imajviewer
logo_path: C:/projects/imajviewer/windows/runner/resources/app_icon.ico
install_certificate: false
sign_msix: false
environment:
sdk: ^3.12.2
@@ -13,6 +21,7 @@ dependencies:
file_picker: ^8.0.0
path: ^1.9.0
desktop_drop: ^0.7.1
msix: ^3.18.0
dev_dependencies:
flutter_test:

63
windows/installer.iss Normal file
View File

@@ -0,0 +1,63 @@
; ImajViewer Setup Script
; Inno Setup 6
#define MyAppName "ImajViewer"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "imajviewer"
#define MyAppURL "https://git.softmediadesign.com/git_alhan/imajviewer"
#define MyAppExeName "imajviewer.exe"
[Setup]
AppId={{B8F4A3D2-1C5E-4A7B-9D0F-6E2C8A1B3D5F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputDir=..\dist
OutputBaseFilename=imajviewer_setup_{#MyAppVersion}
Compression=lzma
SolidCompression=yes
WizardStyle=modern
PrivilegesRequired=admin
ArchitecturesInstallIn64BitMode=x64compatible
[Languages]
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkedonce
[Files]
Source: "..\build\windows\x64\runner\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent
[Registry]
; Register as default image viewer
Root: HKCR; Subkey: ".png\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: ".jpg\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: ".jpeg\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: ".webp\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: ".bmp\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: ".gif\OpenWithProgids\ImajViewer"; ValueType: string; ValueData: ""; Flags: uninsdeletevalue
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
// Register application path for OpenWith
RegWriteStringValue(HKEY_CLASSES_ROOT, 'Applications\imajviewer.exe\shell\open\command', '', ExpandConstant('"{app}\imajviewer.exe" "%1"'));
RegWriteStringValue(HKEY_CURRENT_USER, 'Software\RegisteredApplications', 'ImajViewer', ExpandConstant('Software\ImajViewer\Capabilities'));
end;
end;