{"id":810,"date":"2011-04-25T20:34:08","date_gmt":"2011-04-25T18:34:08","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=810"},"modified":"2011-04-23T23:30:11","modified_gmt":"2011-04-23T21:30:11","slug":"auf-was-man-unbedingt-achten-muss-wenn-man-an-manifesten-fur-assemblies-herumbastelt","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2011\/04\/25\/auf-was-man-unbedingt-achten-muss-wenn-man-an-manifesten-fur-assemblies-herumbastelt\/","title":{"rendered":"Auf was man unbedingt achten muss, wenn man an Manifesten f\u00fcr Assemblies herumbastelt"},"content":{"rendered":"<p>Ich habe f\u00fcr ein Projekt Manifeste zur Verwendung von <a href=\"http:\/\/msdn.microsoft.com\/en-us\/magazine\/cc188708.aspx\">Registration-Free COM Module<\/a> gebaut.<\/p>\n<p>Diese COM-Module wurden \u00fcber ein Manifest in einer EXE geladen. Nat\u00fcrlich hatte jedes der COM Module wieder ein eigenes Manifest, die ich entsprechend angepasst habe. Jede COM-Class, die verwendet wird, muss ja in dem Manifest der DLL-Assembly aufgef\u00fchrt werden.<\/p>\n<p>Eigent\u00fcmlich war, dass ich nach \u00c4nderungen der Manifeste und auch nachdem das COM Modul komplett neu gelinkt wurde, dennoch die EXE ihr Ladeverhalten nicht ge\u00e4ndert hat. Manche COM-Klassen wurden nicht gefunden. Sobald ich aber den Rechner neu gestartet hatte funktionierte ab dann alles wie gew\u00fcnscht und das ge\u00e4nderte Manifest schien nun wirksam zu sein.<\/p>\n<p>Da gibt es einen Cache dachte ich mir. Und nach einiger Recherche im Internet stie\u00df ich auf den folgenden interessanten Artikel von Junfeng Zang:<br \/>\n<a href=\"http:\/\/blogs.msdn.com\/b\/junfeng\/archive\/2007\/10\/01\/vista-activation-context-cache.aspx\">Windows Vista Sxs Activation Context Cache<\/a><\/p>\n<p>Wie man lesen kann, wird bei jedem erfolgreichen Einlesen einer Anwendung und dem erfolgreichen Laden aller Manifeste und DLLs, die ganzen ermittelten Daten in einen Cache gespeichert. Da ich die EXE aber nicht ge\u00e4ndert habe, wurden auch die untergeordneten Manifeste nicht neu gelesen, auch wenn diese ge\u00e4ndert wurden.<\/p>\n<p>Durch das \u00c4ndern des Datums der EXE werden die Cacheeintr\u00e4ge ung\u00fcltig, und danach werden alle Aktivierungskontexte der Anwednung und aller anderen Assemblies neu geladen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe f\u00fcr ein Projekt Manifeste zur Verwendung von Registration-Free COM Module gebaut. Diese COM-Module wurden \u00fcber ein Manifest in einer EXE geladen. Nat\u00fcrlich hatte jedes der COM Module wieder ein eigenes Manifest, die ich entsprechend angepasst habe. Jede COM-Class, die verwendet wird, muss ja in dem Manifest der DLL-Assembly aufgef\u00fchrt werden. Eigent\u00fcmlich war, dass &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2011\/04\/25\/auf-was-man-unbedingt-achten-muss-wenn-man-an-manifesten-fur-assemblies-herumbastelt\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eAuf was man unbedingt achten muss, wenn man an Manifesten f\u00fcr Assemblies herumbastelt\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,17,2],"tags":[370,69,278,279],"class_list":["post-810","post","type-post","status-publish","format-standard","hentry","category-programmieren","category-vista-2","category-windows-api","tag-c","tag-manifest","tag-sxs","tag-winsxs"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=810"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/810\/revisions"}],"predecessor-version":[{"id":819,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/810\/revisions\/819"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=810"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}