Can you safely delete files in the %windir%Installer directory?

Along the same lines as removing items from the Windows component store to save space, we have recently seen a couple of questions come in about the Windows\Installer directory. This is a hidden system directory; it is used by the Windows Installer service to cache installer data files for various applications. Over time, this directory will grow and can eventually take up an amount of space that might cause pressure on thinly provisioned storage, such as virtual hard disks.

So, the question usually asked is: Can I safely remove the files in this directory? The answer is flatly: No. So let's talk about why this is a bad idea.

First, it is not supported. If you remove files from this directory and have issues, you may need to reinstall the application to get back to a good state. Therefore, that would suck for both you and the engineer that needs to deliver that message.

Second is the overall idea that you really should not remove items in the Windows directory. We build and test our software based on the existence of specific files and directories. When those files and directories dont exist, bad things can and will happen. However, that is a generalization that usually upsets many people so let's be more specific. This particular directories job is to act as a cache location for Windows installer based applications. It holds stripped down versions of the Windows installer data files. During application install, update of the application or application removal, this directory is used by the application to confirm the existence of previously installed items to determine the next steps the installer needs to take. The files are different from machine to machine, so if you expect to delete the files in the directory and then copy them over from another machine, that would be incorrect. Removing items from here could cause you to have application crashes, or worse, require the reinstallation and patching of the application.

The proper way to alleviate space pressure in this directory is to uninstall any unneeded applications.

I hope that this makes sense and you can see why removing files from this directory can cause you unneeded pain. Overall, this is similar to the advice I have given in the past when it comes to removing items from the component store...just don't do it. Plan your future space requirements based on your operating system and application needs and you can alleviate many of these types of issues before they occur.




Comments (87)
  1. @Fitz;

    Use takeown.exe to take ownership of the file/directory and delete it.  Typical "joscon disclosure" rules apply 🙂

  2. @Andre;

    Ideally, the way to reduce the foldersize is to increase your disk space.  We really dont want people removing or manipulating items in that directory.

  3. Unfortunately, I wont be of much help here.  The only supported method of removing files from the directory is uninstalling the application that populated the directory.

  4. Good call Pronichkin, I've added that to the blog.


  5. @fuzzy

    I'm fine with you expressing your opinion and fully support your right to freedom of speech, so I will reprint your complaint under my name removing your offensive remark about metro design.  

    Editied comment by fuzzy-lama below:

    Actually, joscon… it's obvious you're defending Microsoft's INABILITY to design a product that the consumer REALLY WANTS. Again Widows 8 is another failure of bloatware, needless so-called enhancements, more so just more trash. You folks make no effort to actually resolve previous issues rather you build on top of old issues over and over adding more bloatware that people do NOT need.

    Winsxs: is total hogwash, design Windows more effectively and you would NOT need it!

    Installer directory: a total flop in design, once files are installed the installers and temp directories should be purged from the system.

    Metro: Whatever….. <removed offensive comments> colourful display of colors are taking over Microsoft development team, than actually providing a USEFUL PRODUCT that does NOT burden the user!

    The entire purpose of an OPERATING SYSTEM is to provide a SLIM and SECURE product, NOT add consistent and useless trash.

    At least Apple OSX has it right!

  6. Tell me how you really feel Andre 🙂

  7. @fuzzy

    So now for my reply:

    The design on winsxs isn't perfect but it is better than previous operating systems.  I've always stood by that and will continue to do so.  Having supported Windows for over 15yrs now, I've seen servicing from multiple operating environments and this actually does work better for most people.  When it breaks, its as bad as anything previously but that's partly the nature of software.

    I'm not involved with the Installer so I wont pretend to know their design as well as others.

    As for "Metro", its a matter of opinion, I've talked to people who love it and people who hate it.  I don't have to ask which camp you're in.  As for Apple, they're rumored to really like the concept for iOS7 (…/ios-7-said-to-be-flat-just-like-windows-phone) so obviously they see some value in the nature of the OS if those rumors end up being true.

  8. @Ben,

    Thanks for the feedback.  We actually do provide guidance for this and its that is, its recommended you allocate 40GB for storage for the OS volume.  In Windows 8/Server 2012, there are other things you can do using Features on Demand to remove some features to control disk space. Let me know if you have any other questions.


  9. Interesting set of posts Al, thanks for sharing your thoughts.  

  10. @Mint, my answer directly above is unfortunately the only supported method for removing files from the directory

  11. There are several reasons.  Moving the folder wouldn't update the entry points in the registry for all of the application uninstallers who have written there.  It would also create an administrative nightmare as you'd have to manipulate it each time and application or update was installed.  Additionally, you'd more than likely break future application servicing as many applications write to it as a well known directory, if an application update required a file to be in the directory and it wasn't there, it would fail.

  12. If you can, uninstall and reinstall Office is probably your best option at this point Venkatesh.

  13. Anonymous says:


    I disagree almost entirely. Ok, so Vista/7/8 servicing is somewhat slow, but the ability to mount WIM images is invaluable. DISM syntax takes a bit of learning, but the steps to service an image are entirely intuitive – mount -> modify -> commit -> unmount. That's easy. I printed the DISM syntax and laminated it (seriously). Now i do the commands off the top of my head, mostly, but the printouts are still kept handy. You should think about doing the same – it's a much more productive way to use your time than complaining about disk space usage. I think the all-in-one nature of DISM is great, and will be even more so when the Imagex functionality is added (run 'dism /?' in Win8 to see the new imaging switches). Btw, here is a fascinating article about the WIM format and its development.…/2006.12.desktopfiles.aspx


    could you at some stage do a post that does a brief overview of the %windir%SoftwareDistribution directory?

  14. Anonymous says:

    "So, I'll bring this up."

    Thanks. The problem with using the m/d/y format is the ambiguity of it, not so much the mental translation into the big-endian-like ISO format. Users with non-m/d/y locales must be constantly seeing dates in various contexts and having to ask themselves if the date is being formatted to their locale, or not. Then there are the inconsistencies found within Windows. Ex: Xcopy /D:m-d-y and Robocopy /min|maxlad:YYYY-MM-DD. I vaguely recall that version numbers were added to the DriverVer key in inf files because of mistakes using the m/d/y date format by non-US programmers. Easy to criticize but what seems a bit odd is why a software company would not *prefer* an easily sortable format like y-m-d.

    As for presentation, i'd be happy just to see YYYY-MM-DD printed in grey, directly below the publishing date, and, just beneath 'KB Articles:'; Superseeded by: <KB####### (<Update Name>) | Nothing>

    "So when you're trying to determine if something applies to something else, look at the versions of the files you have vs. the files you want to apply.  If the file to be applied is greater, thats all that matters."

    Ok, but that will require a little more investigation than just referring to the date, but point taken. I guess a point to note is that an update released just prior to a service pack might not be included in the SP yet have an earlier date than the SP published date. Perhaps instead of or in addition to the published date, the date of most-recent-update-included should be printed on the download page? But that is probably to ignore what you said about ignoring dates and only going on version numbers. Regardless, if version numbers are what should be referred to in determining update applicability, that might be making the case for including something like the filever command, inbox.

    One more bit of info that might be good to include in KB Support and download pages are references to hotfixes and updates to the update in question. Two good examples:

    1. Windows Installer 4.5 Hotfix KB958655…/958655 Referred to on the Visual Studio Administrator Guide page @…/ee225238.aspx but not referred to on either the KB article or download page for WI 4.5.

    2. Platform Update Supplement for Windows Vista and for Windows Server 2008…/2117917 Not mentioned on the 'Description of the Windows Graphics, Imaging, and XPS Library' KB page, equivalent download page, or in the 'Description of the Platform Update for Windows Server 2008 and the Platform Update for Windows Vista' page @…/971644

    Any sort of non-replacing update to an update/hotfix should be referenced in a revision to the 'parent' update page.

  15. All good feedback Drew, thanks!

  16. @xp

    I know you hate the servicing stack and CBS in general so I wont go too much into this, but….I can tell you for a fact that the number of issues we see that are update related are much smaller than we ever saw with XP.  There are goods and bads to both systems and both systems have failed in some form or fashion.  But, CBS is more reliable that update.exe.


  17. xpclient says:

    If only Microsoft re-engineered the servicing once again in Windows 8, users wouldn't constantly ask MS how to keep the disk eating OSes (Vista, 7) from eating away their HDDs and clean other system folders. Just bring back a servicing mechanism with a ****simpler design*** that:

    1.   Installs updates as fast as XP and doesn't thrash the disk during installation and logoff/logon.

    2.   Doesn't eat disk space over time and actively deletes older superseded components

    3.   Doesn't require slowing logoff and logon at all for "configuring updates".

    4.   Allows slipstreaming service packs

    5.   Doesn't create a super-complex directory structure with very long unique filenames under WinSxS and hard links all over the place. ReFS doesn't support hard links remember.

    These should be Microsoft's design goals for the next servicing experience. Meanwhile, good luck and bless those poor Windows 8 souls taking hours on their tablet.

  18. Drew;

    What I mean by that statement is that the file date/date modified should never be used for determining the state of a file on the machine.  Many things can change those dates.  The file version is the only way to accurately determine the state of a file on the system because thats usually only something the OS is going to modify.


  19. @Nick,

    The "I don't know" was for the Installer directory (because that's not part of Windows servicing, I don't know the answer).  For the component store, we don't allow you to junction the directory to another drive, it breaks the servicing mechanisms.

    Disable-Feature does exactly that, it disables the feature.  It doesn't remove the payloads (at least until Win8 added the -Remove switch) because the component store in Win7 doesn't trim out payloads, it either stages or installs them.

    Removing patched files from the payload directory in Installer can break application compatibility and uninstall capabilities, which is why you shouldn't do it.  This is similar in Windows for the component store, we leave those past updates there in the event of rollback.  While we don't support removing them, we wont stop you from doing so if that's what you want to do.  However, if you call into support and have removed them, you'd most likely be told to rebuild the install because we don't test the repercussions of performing operations like that against the store.

    Lastly, the SoftwareDistribution folder is typically cleaned up but AV and some other software can leave open handles which leave files in the directory.  You can rename or delete the Download folder to reclaim that space.

  20. @Drew;

    Thanks.  I finished in 4:13 or something like that, it was my first marathon and I definitely hit the proverbial wall.  I really didnt want to lose to that dog at the end <G>

    As for the other two items, I'm glad you brought this up because honestly, I've never even thought about the date as it is now.  I guess because it works for me, its never been a problem but that is short sighted.  So, I'll bring this up.

    As for the second point, I'll have to see what work would go into getting KBs published with more information but we typically do have something in updates that will say, "this fix is included in service pack XX".  So, I'll have to do some more thinking here and see what would make the most sense in regards to getting the information you need in a consumable fashion.

    But to clarify something else, never use dates to determine applicability.  Use file versions. Dates have been used incorrectly in servicing for years (since NT) and its always been a pet peeve of mine.  So when you're trying to determine if something applies to something else, look at the versions of the files you have vs. the files you want to apply.  If the file to be applied is greater, thats all that matters.  You can use Service Pack version numbers to help with this kind of stuff to an extent.

    For service packs specifically, its best to just check the files included in the service pack articles.  For Windows 7 SP1 that information is located here:…/details.aspx


  21. No worries, I got rid of the dupe.  As for the installer files, no you shouldn't delete them.  Keep in mind that the date on some of those files isn't a reflection of when they were installed but most likely when the developer of that cache created the files.  

  22. @Toasty,

    We changed the way some of this works in Windows 8.  You have the ability to add/remove features you don't want/need completely from the operating system to conserve space.  I have other blog entries that discuss this, just look for features on demand.

    As for Windows, you have a couple of options with the component store (winsxs) but none for the Installer directory.  Unfortunately, I don't know a ton about the Installer directory as its not part of the overall servicing architecture (ie. it doesn't use CBS to do its work) outside of what I have posted above after some conversations with some folks internally.


  23. and removing older updates! But it still happens that files are left after removing software.

    Why can't you provide a simple software which checks if the MSP/MSI is still referenced or not? This software: only works for 32Bit Windows, the results are wrong for 64Bit Windows.

    I hate this folder, it is 14GB on my system 🙁 WinSxS is only the half (7GB).

    Microsoft Installer is one of the worst things ever made. Slow, uses too much space in this folder and often causes failures.

  24. @Drew;

    Windows Installer service takes care of the creation and maintenance of the folder, the cached files are stripped down stubs of information the installer (and developer of the application) have determined are needed in the even of a change.  The applications developer knows what they wish to leave cached and coorespondingly call into the cache when they need to make changes to the application.

    And yes, sadly thats me barely beating a dog in a marathon.  I assume you got that from Ned's blog 🙂


  25. Nick;

    As for problems, I have seen a few when things are removed but I will be honest and say they're not common.  The main issue I've seen when removing previous versions ends up being the call where things are "acting weird" on the system and when we dig into it, we find that the user removed something in the component store.  It tends to happen more when you touch things like the kernel files and less when you mess with things like games, mostly because of how often the files are being used (in my opinion).

    As for back porting or API's that allow the changes we have in Win8 in Win7, the short answer is no, there isn't a way to do this.


  26. @Nab;

    Possibly.  We do have a DISM PowerShell module in Win8/2012 already, so the functionality has moved there.  But we've also expanded DISM in 2012 to include things like the IMAGEX functionality of the WAIK.  I guess time we'll tell 🙂

  27. Looks good Drew, I'll shoot this around internally and see what others think of the idea.

  28. I think CBS will be used until NTFS is dead in Windows 9/10 when ReFS (which doesn't support hardlinks from what I read on the b8 blog) comes to the client.

    Fill GOOD Feedback (not your troll posts) with the Feedback tool to requrst changes. Most of my WinSxS issues I discussed with 20MSFT employess over several beta tests are now fixed in Windows 8.

    And Win8 lets you remove files from WinSxS folder

    (DISM /Disable-Feature /Featurename:<name> /REMOVE). So disable the features you don't like and the files are removed from WinSxS. This reduces the size.

  29. Anonymous says:

    BTW – I came up with an idea of how to improve windows installer and programs in general

    Instead of pestering the whole OS with files in every corner of the system, why not take advantage of VHD's ? (or similar concept) – So when a program is installed, it creates a VHD files which contains everything – isolated and easy to move or get rid of.

    i believe that OSX has been using such a construct for many years, where programs are simply 'folders' that are executable.

    do you have any comments of this idea ?

  30. @xpclient

    "I use Windows 7 but I will keep reminding Microsoft that they destroyed the speed, ease of use, simplicity and lightweightness of XP servicing in the redesign for "reliability" of Vista/7/8"

    reliability is always better. Last month I installed the XPMode, installed an older SDK and 1 day later it was patchday. After installing the updates I tried to use the XPMode 1 day later it is was broken and I can't install other things (Windows Installer service and other things can't be started). And this happens on a 2 day old VM. I never had such thing in NT6.x 😉

    And slipstreaming updates is still easy. 3 lines of code (mounting WIM, DISM App-Package, Unmount-Commit).

    "XP servicing was FAST and by FAST I mean really really fast." – Fast , but buggy. See my XPmode VM test.

    And you still don't understand or better are NOT WILLING to understand CBS. You still have the same wrong "arguments". Your blog post is written in a good style but with completely wrong arguments like this:

    "Windows keeps multiple copies of the same file in WinSxS" – wrong, there are no copies of the SAME file. Each file exist once in the WinSxS folder and depending of which version is needed (LDR, GDR) the hardlink is generated.

    " it still maintains the older backup of the previous versions of components in WinSxS so the user would be able to uninstall updates. " completely wrong and nonsense. What you write applies to XP servicing. Removing files from the C:Windows$Uninstall$KBxxxxxx breaks the ability to install updates.

    If you want to remove the older files, uninstall the older superseded updates. This works fine. Here is the only part to criticize MSFT. They should give a command to detect and uninstall oder superseded updates. I do this everytime my own at patchday ad uninstall superseded Updates and my WinSxS folder is 7GB and I have over 200 updates (updates, seceurit fixes and hotfixes) installed.

    Also superseded drivers can be uninstalled from Driverstore with pnputil. This reduces the C:WindowsSystem32DriverStore size.

    So you really need to learn how CBS works first, your wrong "arguments" are really boring after repeating them 100th time again.

    @topic of C:WindowsInstaller folder

    in Windows 8 (ADK under Windows 7) some files are now stored in C:ProgramDataPackage Cache.


    So the MSFT way to reduce the C:WindowsInstaller foldersize is to move them to a new location? This is a bit ugly.

  31. Anonymous says:


    I delated the files in Windows Installer, now I lost Icons of all the applications and also I cannot repair Microsoft Office 2010. Is there any way to address the problem?

  32. Anonymous says:

    The Menu:

    1. Effective and reliable

    2. Fast and efficient

    3. Free

    Your choice: Any two.

  33. Anonymous says:

    Thanks Joseph.

    The following fields line up neatly with mono-spaced font <G>.

    Published date: <Long format date>

    Timestamp date: YYYY-MM-DD

    Invalidated by: Service Pack # | Cumulative Security Update for IE …

    Superseeded by: KB#######, KB_later_

    In the Win7 SP1 documentation page you gave the link to, there is a document download called 'Notable Changes in Windows 7 and Windows Server 2008 R2 Service Pack 1.doc'. What do you think of the idea of having a web page for each major OS release (7_x86, 7_x64, WS08R2 etc), called something like 'Notable Updates to Windows <OSIdentifier>'? Aimed primarily at image builders and admins, it would list all the 'milestone' updates for each release, post-RTM. Obvious stuff like service packs, IE updates, update rollups, platform updates, but also updates you would want installed before installing any apps, or using outside of a high-security environment. Things like the latest timezone update, appcompat update, and highly desirable security updates, such as the latest ActiveX killbits, or the .lnk exploit mentioned in the 2nd paragraph @…/Java-is-the-largest-malware-target-according-to-Microsoft-1387528.html Also included would be hardware related updates like that for Advanced Format Disks (4KB sectors), or CPU related updates that affect performance. So the general idea is to advise on what the minimum set of recommended updates are to have installed before making a master image, or installing any apps, or connecting to Windows Update for the first time, or adding to a production environment. Any merit?

  34. The honest answer here is "I don't know" because we don't test it to work in that fashion.  It may work just fine or it might work intermittently for different applications, it all depends on what the application stores in the folder and how it's linked in the file system, registry, etc.

  35. You'd have to see what files still in the directory are linked to.  If you've removed those applications then I would think it would be safe to just delete them.  Otherwise, you're likely to find they are still components of larger application suites (such as Office, A/V products, etc or common frameworks) that are still required for the system.  Not every uninstaller properly cleans up the directory.

  36. @Harry,

    Understood, and you're right, I cant talk about future released but I appreciate the feedback.  I'll keep making sure that these types of requests are voiced to the product teams.  


  37. Sudlo says:


    i have gone through the entire.. forum.. liked the discussion now i am back to square one.. now there are installer files which are way back 2011.. is it wise to delete them.. or is there nay tool which we can use to remove them..

    (sorry about the double post)

  38. I simply hate the Windows installer. Installing Sp1 for VS2010 takes so much time. its time for a new format which also supports offline servicing like MSU updates. Installer is from Office 97 time frame.

  39. @Montago;

    The problems you're seeing after deleting the Installer files is exactly why we don't recommend doing so, there are countless problems that can occur if you do so.

    As for your idea, we have a modular solution in Windows 8/Server 2012 that allows for feature by feature removal already.  It doesn't apply to the Installer directory but it does allow for pruning of targeted payloads.

  40. Anonymous says:

    Thanks. I suppose the only field i've missed in the above list is something for subordinate updates (for want of a better term).

    "Dates have been used incorrectly in servicing for years (since NT) and its always been a pet peeve of mine."

    Could you elaborate on this? Who or what has used dates incorrectly? I actually like dates as version numbers, in general. For example, i would prefer if the Windows build number was a timestamp, and then for the full Windows version number to be formatted like this:


    It would also be helpful if this became a machine environment variable, say 'OSVersion'. (The 'ver' command is not outputting anything that a single envar couldn't.)

  41. To be honest, I don't know.  I would imagine the Installer folder has limitations are the component store in that it cannot traverse disk boundaries and function properly.  But that's merely a guess.

  42. Can you?  Yes.  

    Should you?  No.

  43. @Nick;

    To be honest, I'm not even sure where you're going with this anymore to be honest.  I understand your frustration with the component store size but you're losing me after that.  If you have multiple language packs, they will have files associated with them in the OS that will consume space, so you can remove unwanted language packs and their payloads for system files to save space (its best to do this via rebuilding the image without them though).  

    Additionally, many of the core files, such as kernel, do have multiple updates to them so it wouldn't surprise me that you have 15 versions of a file with the name ntoskrnl.  I have 15 on my Windows 8 machine as well (although one is a manifest and one is a backup).  

    I've said this many times in the past, no one is stopping you from removing these files if you want to, but we're also not going to guarantee your system will be stable and it might result in a rebuild of the environment.  The design of the component store isn't changing in Windows 7 but it did change in Windows 8 to allow for some of the removal options you're looking for now.

  44. xpclient says:

    I don't see the core issue of slow servicing/speed/performance addressed in Windows 8 Beta. I am not trolling but expecting a very realistic scenario here – low power tablets taking hours and hours to install a service pack and post SP-updates.

  45. @NickViz in Win8 you can detect and remove replace updates with DISM and disk cleanup:…/page__view__findpost__p__1015509

  46. xpclient says:

    I have let XP go, I use Windows 7 but I will keep reminding Microsoft that they destroyed the speed, ease of use, simplicity and lightweightness of XP servicing in the redesign for "reliability" of Vista/7/8. I don't expect anything exciting from Windows 8 because MS has designed the servicing stack in a way that performance, disk space and ease of use are all last priorities. Even to slipstream hotfixes, the earlier simple /integrate switch is replaced by some zombie multi-step operation involving WAIK, extraction, learning of complex DISM syntax and what not.

  47. Not sure I understand the question.

    If you're asking if the folder was corrupted by malware due to infection, you'd be best to reinstall and update any applications that aren't working.

  48. @Drew;  Sure, I'll do something on SoftwareDist here in the near future.

    To both of you, I understand XPs point and I think he would counter that XP's ability to integrate service packs with a single switch was invaluable to him.  You're actually both right.  The new servicing model is not perfect.  I would challenge that no piece of software is.  That being said, I do prefer the new model and its not just because I work here.  XP lacked the checks and balances that we now have in the current model and those balances provide for a lot more mutability and robustness when it comes to system stability


  49. @xpclient;

    At some point you're going to have to let WinXP die <G>.

    I understand your points above though and I will speak to the changes in Windows 8 servicing when the time comes.


  50. Anonymous says:

    Thanks Joseph.

    Yeh, i did get the photo from Ned's blog.…/askds Don't be so modest, you ran a marathon! Can you tell us what your time was?

    Changing topic. Here is the link to the latest DirectX End-User Runtimes (June 2010)…/details.aspx Two problems:

    1. Date Published is in locale specific format. Let me tell you how i really feel <G> about locale specific date formatting; it sucks! Please, can this field be changed to the ISO *international* date format: YYYY-MM-DD?

    2. As an example, is this update included in the latest service pack (obviously SP1 in this case)? Date Published indicates yes (4/18/2011 vs. 3/15/2011). Name (June 2010) indicates no. The Quick Details section is missing an obvious piece of info; 'Superseeded by: <Hotfix | Update | SvcPack>'. The first thing i'm interested in knowing about an update is; Is this in the latest SvcPack – yes or no? and/or Has this update been superseeded by another update, and if yes, what is it? Maybe i'm going about it in the wrong way?

  51. Anonymous says:


    "I respect your opinion."


    "I spent my valuable time learning pkgmgr, PEImg, and IntlConfg and suddenly with Windows 7, they were deprecated and replaced with DISM. I have no trust that DISM will stay and won't be replaced again by something else in Windows 8."

    DISM is still there in the Win8 DP, and apparently more capable than ever. I think DISM is here to stay. It seems to be a more robust tool than the tools it replaced, and MSFT are still adding functionality to it. It appears to be an integral part of the servicing stack – at least in the sense that other tools call down to it or it is called indirectly. However, you have a point that i can't explain away – MSFT should be giving advice on the likely lifetime of the tool, at least one OS release in advance. It would not be quite right to, for example, roll out Win9 and say, "btw, DISM is deprecated in favor of blah", without giving notice.

    "Also, you can argue that reliability is somewhat increased by the new servicing stack (even that is questionable as I have seen hundreds of thousands of Vista and 7 system rendered unbootable and stuck in a state half across installing service pack 1 or patch tuesday updates."

    Which as we found out last year, was at least partly due to the state of those systems at the time the service pack was applied, and not necessarily an issue with the servicing stack itself. The 'state of the systems' included unsupported deployment methods, i believe. Yeh, maybe the SP should have done more system checking/prepping before commencing the install, but again, that's not necessarily indicative of an underlying architechtural problem.

    "XP servicing was FAST and by FAST I mean really really fast." "7/Vista servicing is slow as hell, requiring "configuration" as logoff and next restart…"

    Yeh, the new stuff is slow, agreed. However, what is the issue with this? Most office workers are absent after 6pm until 8am the next day. That's 14 hours to get updates done. Not enough? At home, use your other computer and stagger the WU install time.

    "…unnecessarily complicates things under WinSxS.."

    Do you really believe file-based servicing is preferable to component-based? Btw, i reread the last hardlinks post here a few days back, and couldn't believe how amazingly simple (and clever) the whole hardlink concept was, and why it wasn't all obvious the first time through. That was a great post.

    "Tommorrow if I buy a Windows 8 tablet, I am very concerned that I may run out of disk space."

    I guess you mean if the tablet has an SSD? This may be your strongest point – one of the //build/ presentations notes that the new power saving mode (forget the name but it's like a combination of Away mode (monitor off) and S3 sleep + transient power-on for live data refreshing), specifically relies on an SSD. They don't want the spin-up time of an HDD to interfere. Fine, so we need an SSD to get the full benefit of Win8 power innovations. In that case an SSD stops being a luxury, and perhaps we can no longer say – "open your wallet and buy a bigger drive" – if one reason you need one is the OS doing things like keeping redundant component versions in WinSxS. There is also the issue of not being able to move hiberfil.sys to another drive.

    "Plus, you lose the ability to slipstream service packs…"

    Not ideal, agreed. However, is installing the service pack online and then running a 'sysprep /generalize', followed by and image capture with Imagex (and soon DISM!) such a big deal? Can you slipstream IE8 into XP? No, so either way there is likely to be live servicing required when updating the OS source.

    "…the integration of hotfixes into the base image is too cumbersome."


    "I wrote a blog post expressing my thoughts on the new servicing model:"

    Which was otherwise well written but you didn't give much analysis on why CBS had been introduced, nor why people like Joseph would argue for it, overall at least.

    Let me ask a more general question (for anyone to answer, of course), and it relates to what Joseph said above about no software being perfect. My experience is that companies are generally doing one image or image-set build per OS release. Maybe this is not frequent enough. Considering how long Win7 SP1 takes to install (plus problems, in a few cases) must surely beg the question – why aren't systems being *reimaged* when service packs are released, rather than updated online? Sure, it's because there is too much app and user state to worry about. Ok, so why aren't efforts being made to deal with this issue, with the aim, partially, of making things like slow servicing a moot point? On one of the recent Win8 blog posts, i made the point that the OS should be staging classic app install sources, so that when reimaging needs to occur, this stuff can be included in the (hardlink-based) backup and restore process. Or consider already existing program staging like the MSOCache (which might not exist or be or be up to date in the most recent image). I actually got a few-paragraph reply on this proposal by Steven Sinofsky (who didn't agree, but nor did i with him, although he did make me more aware of the issues involved in attempting to recreate the prior state of the OS). Disregarding application state issues, if we started staging install sources by default, then reimaging all systems at least once per service pack release, potentially becomes a much more practical and plausible exercise. You (we) could start putting time into learning unattended app install commands, rather than waiting for WU/MSU/SP packages to install.

    Here is my point: The component-based servicing stack model is what it is, and probably will be until at least Win9. Given that, and what that implies, what alternate ways might there be for dealing with the issues that things like slow updates and non-ability to slipstream service packs is causing, and, what reasonable requests can we make to MSFT to include stuff like a /nobackup switch into DISM?

  52. Anonymous says:

    Hi Joseph

    Like Venki i deleted all MSI files in my WindowsInstaller folder (My Windows installation has very limited space because its on an 40 GB SSD) — I also deleted MSOCACHE because some guys on another forum said it as OK to do.

    After this, most of my files have lost their icon ? – Office files, PDF's and similar are now a white icon.

    Here's the thing i don't understand: MSI files in the WinInstaller are cached to make repairs, updates and uninstall? — and so is MSOCACHE… so WHY the hell do these files affect Windows in the behaviour i experienced ?

    ALL programs work 100% btw – Word opens fine, Visual Studio still work perfectly, Adobe Acrobat works too … so why the heck is my Windows affected by the 'dead' MSI files in my installer folder ?

    I'm sick and tired of WinSXS and WindowsInstaller eating up 20-30 GB of precious SSD space,

    OSX and Linux doesn't eat diskspace like Windows does it…

  53. Anonymous says:

    "This particular directories job is to act as a cache location for Windows installer based applications. It holds stripped down versions of the Windows installer data files."

    What is the nature of these stripped down data files? What is removed? What does the removing?

    "During application install, update of the application or application removal, this directory is used by the application to confirm the existence of previously installed items to determine the next steps the installer needs to take."

    How does an application know what data files to reference in the Installer directory?

    Btw, is this really you?…/5164.clip_5F00_image00211_5F00_4948CD43.jpg

  54. xpclient says:

    @Andre.Ziegler, by "same file" I obviously mean "same filename" but different version number. I may have worded it ambiguously. I have updated the blog post to reword the stuff that you intentionally misinterpret. But your deliberate misinterpretation of my wording and desperation to prove I am wrong doesn't affect the reality that NT 6.x servicing is an engineering disaster in performance and disk space consumption. Good luck NT 6 users freeing up space on your tablet with flash-based storage and uninstalling superseded updates while the battery runs out.

  55. xpclient says:

    So much for "reliability":…/1059012-elevated-command-prompt-on-non-booting-pc People I have come across online and my friends around me with Windows 7/Vista PCs are constantly having such unbootable PC issues. Just last week, my friend's laptop became unbootable while installing W7 SP1 from Windows Update. Can't imagine how it got stuck in that state. Another friend just couldn't install SP1 which would fail at stage 3 or 3 configuring updates reaching 99% and rolling back. I have never had such problems on Windows XP systems so even the whole servicing stack engineered for reliability is laughable. This is one area Microsoft completely screwed up in Vista and wouldn't "fix" it any more in W7 or W8. So I am not complaining over nothing, it's from frustrating real-life experiences and time wasted.

  56. Sorry Joe, but I have to disagree with that comment.  If you've ever taken the time to read my comments/posts, I try to be as understanding as possible between what you as the customer is looking for and what we as a company are doing with Windows.  In fact, its not coincidental that some of the changes coming in Windows 8 are reflected in the posts and comments left here on this blog.

    Yes, there are certain things that you might see as me saying as you have to accept them, and those are true.  For example, this blog simply states that you cant/shouldn't delete files in the Installer directory.  For Windows stability, you really shouldn't.  Can you?  Sure, be my guest, but there is a good chance you might have application instability when updating the app.  Do you have to accept that as the way things are?  Kinda.  It's not something I have seen changing in the releases I am working on but that doesn't mean that it wont change in the future.


  57. Pronichkin says:

    Just to add, the proper way to reduce the space consumed by this directory is obviously to remove unnecessary applications.

  58. Anonymous says:


    You should really get your programmers to get a clear division between OS and Application files. What are setup/uninstall information files of applications doing in the Windowswhatever directory??

    If an application asks where to install, it should be confined in that directory only!

    Same for 3rd party drivers.

    An application or driver (and not both in the same) should have 1 directory, and if an uninstall has not removed all files, if windows gets the message that the application has been successfully uninstalled, why doesn’t Windows clean-up after it if the application
    didn’t do that properly? Same with registry information.

    Give user the option to let Windows remove old versions of a superseded update, and in corporate environments, defined by GPO.

    Maybe off-topic, but why is there still such a thing as Program Files and Program Files (x86)… It should be Program FilesApplication or Program FilesApplication (x86) if that distinction is still necessary… Even in Windows 10! But they should have done
    this from the beginning!

    So, I suppose my message to you is… consolidate, consolidate, consolidate…

    PCHEALTH, ModemLogs, LiveKernelReports, … all logs(?) -> Eventlogs

    Temp, msdownld.tmp, SchCache, all temporary files that can be deleted as soon as not anymore in use -> WindowsTemp

    And so on. Get your programmers to write a Readme.1st in every folder of Windows and other OS folders to explain what this folder is, and why you can’t delete anything from it, and we’ll see how quickly they can consolidate.

    In short, the Windows folder is one-big-mess. (to not even start on capitalization consistency).

  59. Thanks for the feedback and I totally understand where you’re coming from. Many of the things you’ve described above fall into the app compat category. So many people use our products and have across such a long time frame that removing things such as
    Program Files x86 would cause many applications to simply stop working. While it would be nice if every application developer wrote to Program Files (and many do these days), those applications which people love using but are no longer under active development,
    also should still work and that’s what its there for.

    As for things like the Installer directory, that’s still somewhat of a mystery to me because my team doesn’t really delve into that code very often. Trust me when I say that on my team, disk footprint is a very real consideration and we’re very conscious of
    how decisions impact users. I know other teams feel the same way. Keep providing feedback and we’ll keep looking for solutions would be my best compromise here.

  60. Harry Johnston says:

    For the record, I have seen situations where the Installer directory contains multiple (identical) copies of very large files; if I remember correctly, each time a particular installation failed it left behind an additional copy.  So there may be situations where the administrator has to delete files manually.

  61. xpclient says:

    @Drewfus, I respect your opinion. I spent my valuable time learning pkgmgr, PEImg, and IntlConfg and suddenly with Windows 7, they were deprecated and replaced with DISM. I have no trust that DISM will stay and won't be replaced again by something else in Windows 8. Also, you can argue that reliability is somewhat increased by the new servicing stack (even that is questionable as I have seen hundreds of thousands of Vista and 7 system rendered unbootable and stuck in a state half across installing service pack 1 or patch tuesday updates. Before Windows 7, we didn't even have DISM /revertpendingactions but the average user doesn't know about such stuff. XP servicing was FAST and by FAST I mean really really fast. You could install entire service packs in 10-15 minutes and dozens of chained updates in less than 5 minutes. It gave you the option (because of its very design) to not waste disk space. 7/Vista servicing is slow as hell, requiring "configuration" as logoff and next restart, unnecessarily complicates things under WinSxS, and the foot print of the OS goes on increasing over time as you install more updates which is shockingly ridiculous. Tommorrow if I buy a Windows 8 tablet, I am very concerned that I may run out of disk space. Plus, you lose the ability to slipstream service packs and the integration of hotfixes into the base image is too cumbersome. So how many regressions now you can say just for sake of "reliability" and "robustness" which is also questionable as my own systems stopped working installing Vista SP1 and WIndows 7 SP1 would just reach stage 3 of 3 (99%) and then roll back. I won't say it's reliable at all. It is the reason the OS image is getting bloated and MS needs to do something urgent about it in Windows 8 or Windows 9. I wrote a blog post expressing my thoughts on the new servicing model:…/servicing-disaster-in-windows-vista-and.html You can see the nightmarish experiences many users are having with Vista/7 servicing.

  62. xpclient says:

    To each his own, I do not agree with any of your arguments but I hope a future version of Windows will be engineered for super fast, bloat free and simplified servicing. Speed, less disk space consumption over time and simple design will only benefit the product.

  63. says:

    For the record, as of Windows 7 the .MSI files stored in WindowsInstaller are no longer "stripped down" because that generates unsigned UAC prompts upon uninstall of what was originally a signed package.  The behavior of an unsigned uninstall prompt is exactly what was seen in Vista and the Windows 7 solution was to stop stripping down .MSIs.

    Microsoft: Please give us an MSI Group Policy key that allows the old behavior to be retained – if all our installs and uninstalls happen through a software distribution system – there aren't any prompts anyway!

    For those of you building your own MSIs, be sure to choose the package format of "External CABs" then when the MSI is copied it is already small because it does not contain the software files.

  64. Joe says:

    the attitude displayed here by joscon is basically "do what your told to do, and like it" … instead of confessing their sw architecture is punishing the user thru lazy design, they just tell us to suck it up and buy more disk drives. Great… where's the phone number to the Apple Store…

  65. Nab says:

    Just to point something i found interesting, i think someone said "DISM is here to stay".

    Well i think it will be deprecated one day for Powershell cmdlets – DISM syntax is already similar to Powershell cmdlets (so need to learn the syntax again) , Powershell is now include in WinPE 4.0 etc…

    And i think it is a very good thing if Microsoft start to replace those hundred of Windows utilities by a set of Powershell cmdlets.

    In Windows 8 R2 or WIndows 9 maybe…

  66. walrus says:

    Can i delete some of the item from the Installer folder or not? if yes, how?

  67. Venki says:


    I delated the files in Windows Installer, now I lost Icons of all the applications and also I cannot repair Microsoft Office 2010. Is there any way to address the problem?

  68. Ben H says:

    Hi Jason. Thanks for your answer for this question. Regarding your suggestion that we "Plan your future space requirements based on your operating system and application needs .", that is simply not possible as long as Microsoft constantly changes the way Microsoft uses user's computer drives without providing either useful information or advance notice regarding the space that Microsoft is going to take up on users hard drives.

    I know that if falls on deaf ears but – again – some sensitivity to the providing of user's control over user's systems would be most welcome.

  69. Joes2 says:

    is there any problem with using a JUNCTION so that the installer files can be moved to a different (local) drive?  ie  C:WindowsInstaller  -> D:WindowsInstaller  ?

  70. NickViz says:

    Hi all,

    I still don't understand, why I can't remove superseded files after I made sure that update / fix works properly. I also don't understand why should I call DISM /Disable-Feature command with different features and why Windows can't remove disabled features files itself. I can't understand why many people tells you guys that WinSxS/installer folders consumes enormous amount of space and your reply – buy bigger disk. I also don't understand that if you know that these folders are big and they are going to be _bigger_ – why on question to place them on other volume the answer is "To be honest, I don't know.". In many ways I see now that MS denies any feedback from their customers. "We know better" – that's the answer.

  71. NickViz says:

    And one more – why "C:WindowsSoftwareDistributionDownload" folder is not cleaned up after all updates are installed???

  72. NickViz says:

    Hello all,

    well, I spent half an hour typing answer yesterday, but pressing Post rendered it void. OK, I calmed down then and decided not to type it once more… but it pops up again:

    I'm working with WES7 (Windows Embedded Standard 7), the embedded version of Windows 7. Yesterday, after I applied all recent updates I faced with the fact that I can't fit final WIM file with my OS image to the DVD! Sign. The embedded OS that should run from limited hardware can't fit in compressed form to the DVD.

    I went deeper (C) and found:

    * 289.2 MB of natural languages. OK, it's "simple" MS mistake – lack of granularity, all languages at once even if don't need them. no problem.

    * 88 MB of speech recognition. the same issue.

    that's OK, but:

    8x times Shell32 of 12MB

    21x times!!! ieframe of 11MB

    15x times oskernel of 7.5MB

    24x times htmlrendering (7.3MB)

    Can you honestly say that 24 copies of htmlrendering makes my system more safe and robust?

    Side note: there is a lot of "proofs" form MS guys that WinSxS is not so big – "most of the files there are just hard links". That's bullshit. Most of the files in that folder is real files and only one copy of them is hardlinked to the system32 folder. But it's just a note.

    OK, I wanted to check if these updates are useful. I run fsutil hardlink list command on some files in system32 trying to see what actual folder in WinSxS it's linked to. I expected that it should be the latest one (we installing updates and later update means more fixes, right?).

    Surprisingly it was completely not true.

    ntoskrnl.exe was pointed to the middle of folders bunch with kernels.

    Shell32.dll too.

    ieframe.dll too.

    So what? Part of update files are not used even in theory.

    What does it mean for me? Provide customers not updated machine? What kind of security or robustness are you talking about?

    Inability to remove outdated file versions makes my system less reliable and bloated without a reason.

    During my searches I saw so many posts in Inet from people suffering from the same problem, that I really don't understand why you refuse to admit obvious thing. In whole this story that makes me crazy that we tell you that black is black and you insist – no, it's white, just a pale a little bit. But white.


    P.S. If you're going to continue saying that it's white, please don't waste your and my time, don't reply on my post. Thanks.

  73. NickViz says:

    Hello joscon,

    thanks for the explanation and your time.

    Small practical question:

    You said "no one is stopping you from removing these files" – fine. By your deep knowledge of the whole system – the manual removing of these files (let say all version below the current in use) leads to a problem?

    I mean if I remove the only file and do not update/repair internal components database (so, Windows assumes that these files are still in) and if the coming update doesn't require the roll back (I guess 95% of updates doesn't need that) – in this condition will the servicing system work properly? Or it checks every time the whole WinSxS and if something doesn't match – it stops?

    About file version – I'm not against 15 different version during OS life, I just want to see a practical reason to keep all 15 files and not remove the old ones. I have impression that it's kind of "over-protection" that is not justified by the real life. Compare it with the Restore points – you don't insist that all these points that was created during the OS life are kept indefinitely. You allow user to remove the old, outdated one. (oh, no, pleease, allow us in W9 still remove the old restore points 😉

    Yet another question: you said before that in W8 the scavenging was improved. Question – is it possible (using public Windows API) to do the same (delete old updates) in W7? Or you did critical changes in W8 that were necessary to implement this functionality?

    Is there any sense to invest time in such utility (OMG, I can sell thousands copies of that! 🙂 ? Or it's just not possible in W7?


  74. user says:

    Hi Joscon, what if the folder was a target for infections by one spyware, what should we do ???

  75. Fitz says:


    I have a situation with the Windows Installer file. It's one specific file, "73528ca", and it freezes the computer everytime I do anything to it, and I end up having to restart it either way. I've tried deleting it, but it says "this file is open in another application". When I try deleting through command prompt, it says the directory doesn't exist.

    Now I know you may say just to leave the file alone if it keeps freezing everything, but I don't like the look of it and plus it does it sometimes even when I'm not playing with it.

    Idk if you'll reply, but I do need some assistance.


  76. Al Fox says:


    And another thing – can you even remotely think of a better environment for malware and viruses, then common (and I mean common) desktop icons (lnk) pointing to “weird” folders and files like . . .installer5789454268fa79gt54se.exe only to start a perfectly normal program that can and should be started from its “native ” program folder? I can’t.

    Now, either MS programmers are incredibly lazy, or they get a “commission” from disk and HW producing companies or they have “something else” up their sleeves! Honestly, I don’t care. If you do not like softs, that clog up your memory, if you do not like softs, that look and are messy and ineffective, just VOTE WITH YOUR WALLET. There is no, NO, NO other way. Joscon will not and CAN not help.  

    Pronichkin in this discussion wrote: -Just to add, the proper way to reduce the space consumed by this directory is obviously to remove unnecessary applications. –

    I couldn’t agree more, Windows its self would be a great place to start. MS is getting more “Jobslike” than Apple. I have worked with MS DOS and Windows programs for the past 22 years, but the “You shall have no other gods before me” commandment refers only to God, not MS 🙂 As a video editor I saw the rise and the sad, very sad demise of a company that likewise thought it was “the one and only” solution – the Lightworks. Today they know better, but sadly (because I liked their soft in the beginning) very little editors know about them.

    Farewell till a new generation of programmers come to MS. A generation that knows what humility, towards a client and his needs, means.

    Al Fox

  77. Al Fox says:

    (1 of 2)


    The best solution to the “%windir%Installer” eating up gigs and teras of disk space is to buy OSX, Android, or Linux!!! It is useless to keep pressing “Joscon”. What do you expect him to say?! The only way to make windows think again is to stop buying it. The problem is clear – they are a monopoly and they don’t give a d. . .

    After a backup I deleted the complete contents of the installer folder and apart of the “icons” problem (which is easily resolvable with total commanders LNK editing plugin) no NO OTHER soft apart of Microsoft’s office etc. . . had any kind of problem. Not Adobe, not Corel, not several burning progs – Nero, Roxio… , several video and audio editing softs, (even the big pros like AVID, MAGIX NUENDO) not one of them had any kind of issue. NOT ONE OF THEM. Everything worked flawlessly. I work with them day in day out and have tested this on several different systems.  Another similar solution is to zip your installer folder to a safe place some ware else and restore it to the original place once you decide to reinstall or uninstall apps because some softs (only “SOME” programs) leave their uninstallers here instead of taking them to their program folder.

    Well, as they say – “YOU WILL KNOW THEM BY THEIR FRUITS” (Matthew).

    I think MS knows very well what they are up to – why else name the folders 4975138478995. . . why else hide behind anonymous sets of numbers. Who would want to put his name to the mess he left behind . . .? Old MS programmers, who knew what they were doing, called their windows folder – windows and their system folder system. Good and bad work could be determined at a glance.  

  78. Askanoulis says:

    Why can't someone just move the folder to another location, like to another partition or HD ? Since it is always growing it will eventually be a problem one day. Is there a way to tell the system where to look for the installer folder when it is needed?

  79. fozzy says:

    This thread is the atypical reason why MS is losing customers and people are moving away from windows in droves

    BTW, your excuse that moving the folder wont update the entry points? Why cant you just use the same API/function you wrote for users to move their desktop, downloads, etc folder?

    Your the freaking OS writers. You *can* fix things.

  80. Toasty says:

    Overall WIn7 has been a good experience for me with one exception.  SIZE ON THE DRIVE.  OMG does win7 grow and grow in size far faster than anything that can be considered reasonable.  My OS drive is a 120GB SSD.  My winsxs and installer folders together are 25GB.  

    The article says uninstall unused programs to reduce the installer folder size but come on.  An OS should not grow like this.

    I have been a computer user since commodore 64 was new.   I have learned not to install stuff I wont use after upgrading to my first IBM with a hard drive.  I only have software on the computer that I use regularly.  No more (less even) than on previous computers.  "Just uninstall unused programs" is a very poor answer to this problem.  WINDOWS DEVELOPERS NEED TO REALIZE THAT THE SIZE OF THE WINDOWS FOLDER IS GROWING UNACCEPTABLY FAST COMPARED TO THE RATE OF HARD DRIVE SIZE GROWTH.  I not talking about the growth of the max size hard drive on the market but the growth of a normal size I can afford at the time of new computer purchase.  

    I wonder about the future of windows.  Will I need to give-up on SSD to run Win8 because of the size requirements?     The windows7 system requirements page says the min space is 20GB for 64bit.  I dare anyone to install Windows 7 on a 20GB hard drive.  If you installed no other software you might be able to run windows update for a few months before running out of room.

    Instead of implying that users are installing useless software, win developers should address the space wasting issues in windows.  Windows 98 was great, Windows XP was great – windows has been going downhill since.  If newer software could be run with win 98 I would go back  to it.

  81. Harry Johnston says:

    I realize you probably can't discuss this, but with regards to the space taken up by CBS another Windows 7 service pack would be very helpful. 🙂

    Other folks: do keep in mind that when the servicing stack was being designed, SSDs didn't even exist.  At the time, spending disk space to gain reliability really must have seemed like a no-brainer!

  82. If I was to copy all of the data from this folder onto an external hard drive (considering my SSD drive has 10% of it's capacity used up by this folder)

    And if programs start being silly, copy across what is needed?

    Would the error message that appears say what was missing?

    I'm struggling, after paying a small fortune for an SSD that it is useless for saving documents and photos on after installing my programs and Windows 7  🙁

  83. Arsk says:

    Well I decided to shrink that lousy folder a little, so I started to uninstall anything I thought I wouldn't want anymore, and actually went on to uninstall almost everything I had, and now I have that same folder with the same size,  or not to lie, 600M smaller than the 6G it was the day first. So, any clues?

  84. Arsk says:

    Well there's like a millions files in there, and I can't find a way to see which one belongs to which application. This has been all over my mind for the past ten days or so, since I found out there is such folder, and I have been searching almost the entire internet (if we take that to be the first two or three pages of google) and found nothing helpful. Is there some tools that would clean up that folder a little? I've seen and actually tried those somehow obsolete ones, their names were like msuuc.exe or mszip.exe or something, and none worked. Maybe a little help is on the way? :desperate

  85. MintHillBill says:

    There is something wrong with this folder.  My client has a 35gb HDD and there is 22GB of files in the Installer folder!  She does not have more than 5gb of programs on the machine and add 6gb for Windows. There has to be a way to safely delete the bulk of those 22GB files that is not needed.

  86. Eleven says:

    Dear Pronichkin,
    While I understand your condescending statement about uninstalling applications (which was lauded by Mr Microsoft), here’s what an IT person older than 10 years old would say.
    Over a few years, a 128gb disk will find that several folders have grown exponentially by hoarding every instance of driver files it encounters. You may find that between Windows, WindowsSxS, WindowsInstaller and WindowsSystem32DriverStore that the overwhelming
    majority of your disk is NOT used by applications, but a rogue operating system that has no concept of data management.
    In this instance, you have two options, 1) get a decent OS (as this hoarding behaviour is considered NORMAL and LAUDED by Microsoft staff), or stop listening to arrogant Microsoft staff and 10 year old wanna-be know it alls.
    I’ll leave the option up to you.

  87. John says:

    What about Windows 10? My Installer is 26Gb, WinSxS is 7.5Gb. Will Windows 10 at least support moving them to another drive?

Comments are closed.

Skip to main content