VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Hi Leute,

Ich bin grade dabei mein Bforartists Projekt auf VS 2017 umzuziehn. Blender 2.8 steht vor der Tür, und die sind umgestiegen. Also flink VS 2017 Community installiert und losgelegt.

Kompiliern tut alles fein. Und das Ergebnis startet auch brav. Allerdings habe ich da nun sehr viele api-ms-win-core... Dateien im Bin Ordner. Die gibts in den Blender Binaries nicht.

Was hat es denn mit diesen DLL's auf sich? Ich finde irgendwie nichts dazu. Nur die üblichen Hilfethreads was man macht wenn Windows sich über das Fehlen solcher DLL's beschwert.

Halp ^^
Dateianhänge
apimswincoredlls.jpg
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Das ist die Visual C++-Laufzeitbibliothek – also die Bibliothek, in der du alle Standardfunktionen wie printf() und so weiter findest. Früher war sie komplett in msvcp/rXXX.dll, aber seit Windows 8 sind Komponenten davon ins Betriebssystem zurückgeschoben worden, um sie einfacher warten zu können. Windows 7 besitzt diese Komponenten natürlich nicht, und dort muss man sie dann explizit mitliefern. Und das tut dieser Schwall Dateien.

Und ich würde mutmaßen, dass es Sicherheitsprobleme bedeuten könnte, wenn sie auf Windows 8/10 im Anwendungsverzeichnis landen (denn dann nutzt BfA vielleicht eine veraltete eigene Version statt der, die von Windows Update gepflegt wird, aber dafür müsste man die Side-by-Side-Konfiguration und die Manifests besser kennen).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Dank dir :)

Du meinst also ich sollte die besser löschen? Bforartists startet hier auch ohne die Dateien. Allerdings habe ich hier ja VS installiert, werde also wohl schon deswegen kein Problem bekommen wegen fehlender DLL's. Ich weiss allerdings nicht wie das auf anderen Win 7 Systemen aussieht. Blender liefert jedenfalls seine 2.8 Version auch ohne DLL's aus. Und die haben auch VS 2017 im Einsatz inzwischen.
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Ich weiß nicht, wie die kompilieren und linken. Und wie die Abhängigkeiten aussehen. Und ob die im Setup nicht vielleicht den Installer der Visual C++ Runtime ausführen.

Lad dir doch eine von Microsofts Leersystem-VMs runter: https://developer.microsoft.com/en-us/m ... tools/vms/

Ich würde Windows 7 mit IE 8 empfehlen, das ist quasi im Auslieferungszustand. Dann installier BfA ohne die DLLs darauf und guck, ob es lädt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Das wäre ne Idee wert. Danke :)
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

So, getestet. Bforartists funktioniert unter Win 7 in der VM auch ganz ohne diese DLL's. Dann werde ich die wohl für die Relases einfach löschen.

Besser wäre es natürlich wenn VS 2017 die dll's gar nicht erst anlegen würde. VS 2013 machts ja auch nicht ...

Danke für die Hilfe :)
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Tiles hat geschrieben:Besser wäre es natürlich wenn VS 2017 die dll's gar nicht erst anlegen würde. VS 2013 machts ja auch nicht ...
… und wenn die Randbedingungen anders wären, würdest du dich jetzt tierisch darüber aufregen, warum Visual C++ diese DLLs mit den total verwirrenden Namen nicht mitgibt, denn wer könnte schon von alleine darauf kommen, dass man die manchmal auf Windows 7 braucht ;)

Übrigens erzeugt Visual C++ die DLLs nicht, es liefert sie nur mit aus. In deinem Verzeichnis sind sie höchstwahrscheinlich durch ein Script gelandet, das sie dahin kopiert hat.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Wie mans macht ^^
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Kleiner Nachtrag, Blender hat die DLL's nun auch drin. Umso besser :)
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Ich korrigiere nochmal meinen Kram von oben:
  • Ins Betriebssystem wurde die CRT mit Windows 10 geschoben, nicht mit Windows 8.
  • Alle früheren Betriebssysteme bekommen die CRT (also diese Dateien mit den langen Namen) als optionales Update (KB2999226).
  • Da es Leute gibt, die nur Sicherheitsupdates installieren, und keine optionalen Updates (müssen das komische Typen sein!) musst du bei Windows Vista / 7 / 8 / 8.1 unbedingt dafür sorgen, dass die Dateien mitinstalliert werden. Dass sie in der VM schon dabei waren, war wohl nur Glück, weil Microsoft beim Vorbereiten der VM optionale Updates mitinstalliert hat.
  • Da es sich um ein Betriebssystem-Update handelt, musst du entweder für jede Windows-Version die entsprechende Update-Version dazupacken (also alle MSUs von hier) oder – einfacher – das Redistributable Package in dein Setup einbinden, das Visual Studio beiliegt.
  • Die Dateien einfach ins Programmverzeichnis zu kopieren (wie du und Blender es tun) ist zwar eine sehr einfache Lösung, Microsoft rät aber grundsätzlich davon ab: So werden die Dateien nicht durch kritische Sicherheitsupdates aktualisiert und BfA läuft mit Sicherheitslücken, sofern du nicht bei jedem CRT-Sicherheitsupdate ein neues Setup baust und an die Kunden auslieferst. (Und ein ganz kleines Bisschen Speicherverschwendung ist es auch, weil die CRT dann nicht mit anderen Programmen geteilt werden kann.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Ouhauerha. Also baut Microsoft hier schon wieder eine DLL Hölle auf. Habta fein gemacht.

Hm, also wenn die DLL's nur bei Blender/Bforartist dabei sind, und nur da eventuell veraltet sind, sollte sich doch der eventuelle Sicherheitsschaden einigermassen in Grenzen halten. Oder übersehe ich da was?

Was das einbinden von Redistributables über den Installer angeht, ich habe keine Ahnung wie man das mit Inno Setup bewerkstelligen könnte. Dann dürften sich da wohl auch lizenzrechtliche Probleme ergeben. Kann ich das einfach mit einem GPL Programm bundeln?
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
NytroX
Establishment
Beiträge: 358
Registriert: 03.10.2003, 12:47

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von NytroX »

Das schlimmste, was bei DLLs passieren kann wäre aus meiner Sicht, dass man aufgrund einer Sicherheitslücke darüber Admin Zugriff bekommt und/oder irgendeinen Code ausführen darf.
Dann besteht das Sicherheitsproblem, sobald du sie auf deinem Rechner hast, weil der Schadcode nach der DLL suchen, ein "LoadLibrary" machen und dann die Lücke ausnutzen kann.

Zur Lizenz:
I would like to bundle GPLed software with some sort of installation software. Does that installer need to have a GPL-compatible license?
No. The installer and the files it installs are separate works. As a result, the terms of the GPL do not apply to the installation software.
Siehe: https://www.gnu.org/licenses/gpl-faq.ht ... tInstaller
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Tiles hat geschrieben:Also baut Microsoft hier schon wieder eine DLL Hölle auf. Habta fein gemacht.
Wenn du das Package (vc_redist.exe) ausführst, hast du keine DLL Hell, sondern verfügbare Runtimes und garantierte Updates. (Es geht höchstens was schief, wenn der User aus Unwissen die Visual C++ Runtime deinstalliert weil er denkt, die würde er nicht brauchen.)

Ich sehe das Versagen bei Microsoft eher darin, dass sie keinen einfachen Weg zur Verfügung gestellt haben, das in eigene Installer einzubinden. Wir hatten von 2009–2010 ein kurzes Zeitfenster, in dem die Redistributables als MSI vorlagen und MSI frisch Chaining eingeführt hat – da war alles gut. Aber mit Windows 8 und Metro sind sie auf die kack EXE-Installer umgestiegen (übrigens mit WiX und Burn), und die kriegt man sehr schwer in eigene Setups rein.

Danke für die Frage mit GPL; das hat mich auch interessiert …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Danke Leute. Wieder viel gelernt :)
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

NytroX hat geschrieben:Das schlimmste, was bei DLLs passieren kann wäre aus meiner Sicht, dass man aufgrund einer Sicherheitslücke darüber Admin Zugriff bekommt und/oder irgendeinen Code ausführen darf.
Dann besteht das Sicherheitsproblem, sobald du sie auf deinem Rechner hast, weil der Schadcode nach der DLL suchen, ein "LoadLibrary" machen und dann die Lücke ausnutzen kann.
Als beispiel, dass das nicht unrealistisch ist (und vielleicht auch BfA betrifft): die UCRT-DLLs, die mit Visual Studio 2017.7 kamen, haben ein kaputtes getch() drin. Und jetzt laufen so Sachen wie OpenSSL nicht mehr richtig. Der Fix wird wohl demnächst mit Windows Update verteilt.

Nachtrag: Die Funktion, die das Current Working Directory zurückgibt, wartet ebenfalls auf Windows Update.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Danke für die Info.

Ich muss trotzdem erst mal abwarten was die Blender Jungs da zaubern. Und es gibt ja auch ein Zipfile. Ohne Installer. Es bleibt schwierig ^^
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Krishty »

Krishty hat geschrieben: 28.08.2018, 17:51
  • Da es sich um ein Betriebssystem-Update handelt, musst du entweder für jede Windows-Version die entsprechende Update-Version dazupacken (also alle MSUs von hier) oder – einfacher – das Redistributable Package in dein Setup einbinden, das Visual Studio beiliegt.
Ich möchte nur noch ein hässliches Detail hervorheben:

Es bringt absolut garnichts, in sein Setup die Merge Modules für die CRT einzubinden; ich hatte heute genau so einen Fall beim Kunden.

Wenn wir das Merge Module in Orca öffnen, sehen wir, dass alle CRT-Dateien darin vorliegen:
Bild

Wir sehen außerdem, dass sie alle zu der Komponente ucrtbase.dll_system_x86.XXXXX… gehören. Wenn wir uns diese Komponente ansehen:

Bild

… dann sehen wir, dass die Installation auf die Windows-Versionen 5.1 und 5.2 beschränkt ist. Das sind Windows XP und Windows Server 2003.

Das sah mir glasklar nach einem Bug aus – 6.1 und 6.2 würden Sinn ergeben (Windows 7 und Windows 8). Ich googelte und fand dieses Bug-Ticket bei Microsoft: https://developercommunity.visualstudio ... nstal.html

Dort wird deutlich gemacht, dass das kein Fehler ist:
Daniel Griffing [MSFT] hat geschrieben:The behavior of MSMs for the Windows Universal CRT (being limited to XP) is "By Design".

Beginning with Windows 10 and Visual Studio 2015, the C-Runtime API was moved into the OS and is supported to downlevel OSes via Windows Update (for the set of OSes supported by Windows Servicing). […]

Please install the Windows Update on any OSes from Windows Vista through Windows 8.1 era machines (https://support.microsoft.com/en-us/hel ... in-windows). This is the only currently supported mechanism to achieving central deployment of the Universal C Runtime (UCRT) and API Set forwarders on those OSes.
Das bedeutet: Es gibt kein Setup für die Visual C++ 2015/2017/2019-CRT auf Windows 7. Das Windows-Update KB2999226 ist der einzige offiziell unterstützte Weg. Die Setups intallieren auf Windows 7 nicht die CRT. Bei jedem, der das Update nicht hat, verweigert die Anwendung dann den Start mit der Fehlermeldung, dass api-ms-win-crt-runtime-l1-1-0-dll fehlen würde.

Und das dürfte dann auch der Grund sein, warum Blender die Dateien grundsätzlich beilegt: Es ist einfacher, als sicher zu stellen, dass der Benutzer ein Windows-Update installiert hat, das niemand außer Microsoft verteilen darf.

Nochmal in aller Deutlichkeit: Jedes Programm, das mit VS 2015/2017/2019 kompiliert wurde, ist von Update KB2999226 abhängig. Das ist nur umgehbar, indem man die CRT statisch/garnicht einbindet oder die ganzen Dateien direkt mit ins Programmverzeichnis klatscht (was Sicherheitslücken mit sich bringt, wie oben beschrieben).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1990
Registriert: 11.01.2003, 13:21
Kontaktdaten:

Re: VS 2017 - api-ms-win-core... Dateien im Bin Ordner

Beitrag von Tiles »

Spassig ^^

Ich lege die Dateien nach wie vor bei. So wie Blender auch ...
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Antworten