I am answering this question without a clear understanding of your deployment method, but I'll assume that:
As you mention in your question, it seems wise to separate the internal data from the program itself, and ideally work with 50MB executables, and a compressed 650MB internal data zip.
I would advise that when your executable runs for the first time: you check the existence of your internal data at a predefined location such as C:\Program Files\MyAppDeps v3_internal (as you pointed out in your question). If this data does not exist it is installed from an index to that specified location. Of course, you add version-checking logic that ensures the existing data is up to date, and if not, you let the use know they should update the data using your application when appropriate.
You could also have your executable check if it is up to date with version on the index and follow the same logic as above.
I hope this was useful, please let me know if I should expand on this solution.