{"id":98805,"date":"2018-05-22T07:00:00","date_gmt":"2018-05-22T21:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/?p=98805"},"modified":"2019-03-13T00:44:14","modified_gmt":"2019-03-13T07:44:14","slug":"20180522-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20180522-00\/?p=98805","title":{"rendered":"Why does the install date and size of a program change roughly two days after I install it, even though no changes were made to the program in the meantime?"},"content":{"rendered":"<p>A customer observed that when they install a particular company&#8217;s product, and then go to the <i>Programs and Features<\/i> control panel, the program shows up with the correct installation date. But wait a few days, and then installation date jumps forward roughly two days, even though no updates for the app were installed in the meantime. (Also, the file size changes.) What&#8217;s going on? <\/p>\n<p>What&#8217;s going on is that the system is trying to improve upon the incomplete information it was given. <\/p>\n<p>If a program does not provide size information, then the <i>Programs and Features<\/i> control panel <a HREF=\"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/20040709-00\/?p=38493\">starts guessing<\/a> by doing textual matching between the name of the program in the Start menu and the name of the program in the <i>Programs and Features<\/i> folder<\/i>. <\/p>\n<p>And if a program does not provide installed-on information, then the <i>Programs and Features<\/i> control panel assumes that the file was installed (or last modified) the last time its uninstall information was modified. There is no <i>creation time<\/i> for registry keys; <i>last-modified time<\/i> is all you get. <\/p>\n<p>The final piece of the puzzle is that in Windows 10, the Storage Service looks for programs that registered with the <i>Programs and Features<\/i> control panel but didn&#8217;t provide any size information, and it works behind the scenes trying to do a better job of figuring out which files on the system are part of that program, and when it comes to a conclusion, it updates the registration with the updated size information. <\/p>\n<p>Okay, now it&#8217;s time to connect the dots. <\/p>\n<p>You install a program that provides incomplete information in its <i>Programs and Features<\/i> registration. <\/p>\n<p>Some time later, the Storage Service figure out a good estimate for the size of the program. The Storage Service then updates the registry entry with the improved size stimate. <\/p>\n<p>Updating this information causes the <i>Size<\/i> column to change. <\/p>\n<p>And if the program did not specify an <i>Installed On<\/i> date, it also has as a side effect of changing the <i>last-modified time<\/i> of the registry key, which causes the <i>Installed On<\/i> column to change. <\/p>\n<p>To avoid this problem, just make sure your program fills out both the <i>InstallDate<\/i> and the <i>EstimatedSize<\/i> fields when it registers with the <i>Programs and Features<\/i> control panel. <\/p>\n<p>Of course, if it&#8217;s not your program, then you either have to lobby the program authors to do it, or you can just dive in and set the values yourself. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Because the system is trying to fill in missing information.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[104],"class_list":["post-98805","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-tipssupport"],"acf":[],"blog_post_summary":"<p>Because the system is trying to fill in missing information.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/98805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=98805"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/98805\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=98805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=98805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=98805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}