Autor Téma: Inno Setup - odinstalace a záloha  (Přečteno 472 krát)

Offline peterx684

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Inno Setup - odinstalace a záloha
« kdy: 04-11-2019, 13:51:26 »
Zdravím,
po delší době dělám instalátor v Innu a řeším problém s odinstalací, resp. přesunem zálohovaných souborů na původní místo. Mám pro odinstalaci vytvořený .bat soubor, který když spustím samostatně, tak funguje jak má, ale jakmile se spustí jako součást odinstalace, vyprázdní se pouze složka zálohy, ale zálohované soubory se nepřesunou/chybí v původním umístění. Porovnával jsem instalační skript s dříve psanými skripty a dříve s tím nebyl problém, takže netuším, čím by to mohlo být.

Zde je ukázka toho, jak to mám napsané(bat + inno skript):

inno skript:

Kód: Delphi [Vybrat]
  1. [Files]
  2. ; Backup
  3. Source: "{app}\app\test1.txt"; DestDir: "{app}\backup"; Components: backup; Flags: external skipifsourcedoesntexist uninsneveruninstall
  4. Source: "{app}\app\test2.txt"; DestDir: "{app}\backup"; Components: backup; Flags: external skipifsourcedoesntexist uninsneveruninstall
  5. Source: "{app}\app\test3.txt"; DestDir: "{app}\backup"; Components: backup; Flags: external skipifsourcedoesntexist uninsneveruninstall
  6.  
  7. ; InstallFiles
  8. Source: "D:\INSTDATA\TEST\test1.txt"; DestDir: "{app}\app"; Flags: ignoreversion recursesubdirs
  9. Source: "D:\INSTDATA\TEST\test2.txt"; DestDir: "{app}\app"; Flags: ignoreversion recursesubdirs
  10. Source: "D:\INSTDATA\TEST\test3.txt"; DestDir: "{app}\app"; Flags: ignoreversion recursesubdirs
  11.  
  12. ; Uninstall
  13. Source: "D:\INSTDATA\TEST\uninstall.bat"; DestDir: "{app}"; Attribs: hidden system; Components: backup
  14.  
  15. [Types]
  16. Name: "custom"; Description: "Testing app"; Flags: iscustom
  17.  
  18. [Components]
  19. Name: "backup"; Description: Make backup; Types: custom; ExtraDiskSpaceRequired: 0
  20.  
  21. [UninstallRun]
  22. Filename: "{app}\uninstall.bat"; WorkingDir: "{app}"; Components: backup
  23.  

uninstall.bat:

Kód: Delphi [Vybrat]
  1. del "app\test1.txt"
  2. del "app\test2.txt"
  3. del "app\test3.txt"
  4. echo
  5. move /Y "backup\test1.txt"  "app\test1.txt"
  6. move /Y "backup\test2.txt"  "app\test2.txt"
  7. move /Y "backup\test3.txt"  "app\test3.txt


Díky za pomoc
« Poslední změna: 04-11-2019, 14:05:38 od peterx684 »

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #1 kdy: 04-11-2019, 14:10:30 »
Dá se do toho .bat dát pause a podívat se, co se vlastně děje? Ideálně si i nechat echo on a ověřit si, že je skript spuštěný ve správné složce.

Offline peterx684

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Inno Setup - odinstalace a záloha
« Odpověď #2 kdy: 04-11-2019, 15:11:05 »
zapl jsem echo a přidal pause na konec bat souboru, výsledkem je tohle:


Kód: Delphi [Vybrat]
  1. D:\Program Files (x86)\Testing app>echo on
  2.  
  3. D:\Program Files (x86)\Testing app>del "app\test1.txt"
  4.  
  5. D:\Program Files (x86)\Testing app>del "app\test2.txt"
  6.  
  7. D:\Program Files (x86)\Testing app>del "app\test3.txt"
  8.  
  9. D:\Program Files (x86)\Testing app>move /Y "backup\test1.txt"  "app\test1.txt"
  10. Přesunuté soubory:         1
  11.  
  12. D:\Program Files (x86)\Testing app>move /Y "backup\test2.txt"  "app\test2.txt"
  13. Přesunuté soubory:         1
  14.  
  15. D:\Program Files (x86)\Testing app>move /Y "backup\test3.txt"  "app\test3.txt"
  16. Přesunuté soubory:         1
  17.  
  18. D:\Program Files (x86)\Testing app>PAUSE
  19. Pokračujte stisknutím libovolné klávesy...

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #3 kdy: 04-11-2019, 15:13:17 »
No podle výpisu se to tváří, že k nějakému přesunu i došlo :-)

Offline peterx684

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Inno Setup - odinstalace a záloha
« Odpověď #4 kdy: 04-11-2019, 15:33:19 »
ano, ale soubory se pouze smažou a původní soubory ze složky backup se nepřesunou, posílám odkaz na data k instalátoru, skript a bat:
"destination files" je cesta k souborům včetně testovacích souboru, určených k přepsání instalátorem, ze kterých se tvoří záloha, "installer data" obsahuje změněné soubory a data pro skript, včetně bat souboru. Jakmile se ale bat spustí v Innu, soubory v cílové složce chybí, nic se reálně nepřesune.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #5 kdy: 04-11-2019, 15:35:27 »
A pro srovnání, jak to dopadne, když by instalace byla mimo \Program Files? Jestli není problém v tom, že move přesun neudělá kvůli právům. I když bůh ví, proč pak hlásí, že 1 soubor byl zpracován.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #6 kdy: 04-11-2019, 15:36:55 »
Případně pro zajímavost, jak by to dopadlo, když bys místo move použil copy + del? (del až po ověření, že se povedlo copy.)

Offline peterx684

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Inno Setup - odinstalace a záloha
« Odpověď #7 kdy: 04-11-2019, 15:37:34 »
copy jsem zkoušel také, mělo to stejný efekt

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #8 kdy: 04-11-2019, 15:38:51 »
Třeba soubory slavnostně zkopíruje do nějaké té virtualizované složky, protože to neběží jako správce.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 797
  • Karma: 43
    • Verze Delphi: 10.3
Re:Inno Setup - odinstalace a záloha
« Odpověď #9 kdy: 04-11-2019, 15:42:58 »
Jinak možná by tu obnovu souborů šlo udělat přímo v Inno Setupu: http://www.jrsoftware.org/ishelp/index.php?topic=scriptuninstall

Offline peterx684

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Inno Setup - odinstalace a záloha
« Odpověď #10 kdy: 04-11-2019, 16:01:11 »
je zvláštní, že když uninstall provedu přímo přes bat bez použití odinstalačního exe, tak vše proběhne v pořádku, flagy jsou podle mě správně. Zkoušel jsem vypnout antivir, zda nebrání v přesunu, a zkoušel jsem i instalaci mimo PF a vychází to na stejno.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1440
  • Karma: 34
    • Pepak.net
Re:Inno Setup - odinstalace a záloha
« Odpověď #11 kdy: 05-11-2019, 05:19:01 »
Taky si myslím, že na vině bude UAC a jeho virtualizace souborového systému. A jako hlavní podezřelý mi přijde to spouštění baťáku přímo názvem skriptu, s tím jsou problémy s UAC dost běžně - doporučuju, spusť to jako cmd /c skript.bat parametry.

Jo a taková drobnost, příkazy jako copy nebo del jsou psané 32bitově a neumí přístup do adresářů, které jsou virtualizované kvůli 64bit Windowsům (např. C:\Windows\system32).