Két fájdalmas tapasztalat

1.: macOS: két .app könyvtár, SHASUM, jogok 100%-ban megegyeznek, az egyiket probléma nélkül elindítja a mac, a másikat broken-nek jelzi és egyből törlésre javasolja

2.: Windows: .py > .exe csomagolás után 17x annyi cput és memóriát eszik a program, mint előtte.

Megválaszolásuk összesen több, mint 10 órámba telt:

1.: .app elkészítve, aláírva, git-be feltolva, lesync-elve nem fogadja el az aláírást:
A codesign a Content/MacOS könyvtárban lévő fájlok aláírását alapesetben a binárishoz csatolja. Viszont ha nem bináris fájl van ebben a könyvtárban, akkor egy mac specifikus, xattr tulajdonságban tárolja ezt. Természetsen ez git commit (vagy scp) esetében elveszik, így a túloldalon aláírás hibát fog jelezni annak ellenére, hogy a 2 könyvtár tartalma 100%-ban megegyezik.
Megoldás: a nem bináris fájlokat átmozgatni a Content/Resources-be, így a codesign.xml -ben fogja tárolni azok aláírását.

2.: Természetesen elsőnek én is az py>exe átalakítót okoltam (PyInstaller), de 2 másikat kipróbálva is ugyanaz az eredmény az eredeti scripthez képest: sokszor annyi CPU és MEM használat. Ekkor jött egy igen furcsa felismerés:


> program.exe
Time taken: 13.2s

> copy program.exe program2.exe
> program2.exe
Time taken: 0.7s

wtf?
Windows restart > ugyanaz.
Minden nem kritikus service, windows defender off > továbbra sincs változás

ekkor rákerestem program.exe -re a regeditbe és a "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\program.exe" eltávolítás után tökéletesen működik. (hogy miért került oda és mi volt az értéke nem tudom sajnos)

Hozzászólások

"(hogy miért került oda és mi volt az értéke nem tudom sajnos)"
De utánanézhettél volna. Az Image File Execution Options arra való, hogy debugger contextben futtatja a binárisodat (Image file), azaz tudsz hozzá debuggert csatlakoztatni.
https://blogs.msdn.microsoft.com/greggm/2005/02/21/inside-image-file-ex…

http://stackoverflow.com/questions/2984846/set-image-file-execution-opt…

A PyInstaller gondolom ezt használja arra, hogy valamiféle python AoT compileren áttolja a kódot először, amikor fut (és utána automatikusan eltávolítsa esetleg magát). De nem ismerem a PyInstaller lelkivilágát, mindenesetre ezért nem a Windows a ludas. Van a Windowsnak egy szolgáltatása, amit a PyInstalleres alkalmazások vagy jól, vagy rosszul használnak.