You can install your core app to "program files" folder, which will not be updated.
Then your core app installs updatable app/resources to a writable folder.
Your "core app" only does two jobs:
1, Check auto update
2, Execute your main app from the writable folder.
This is how we did auto update in mobile games. Hope it helps.