I've had a rather complex problem with Keil uVision versions lately. I've begun working on some field-tested code developed for the STM32F105R8 in uVision using the ST libraries in Keil/ARM/INC/ST/STM32F10x/. I cannot say for sure which version of uVision this code was originally developed in, but it has been compiled, loaded and run successfully for some time now.
While trying to get uVision to recognize a ULINK2 controller, I tried to update uVision to v4.7. This led to thousands of compile errors, all related to conflicts between ST library files. In particular, it seems that stm32f10x.h tried to redefine a number of data types that were already defined in other libraries. I was able to remove most of these errors by removing that file from the STM32F10x folder, but now a number of datatypes that were frequently used in the code are not recognized, namely: uint8_t, uin16_t, uint32_t.
I understand that these datatypes can be changed with little impact on the functionality of the code. What I don't understand is why updating uVision would mess up existing code. Are the new ST libraries not backwards compatible? Does updating uVision without uninstalling it first mess up the included libraries? Is it even possible to really uninstall and remove uVision from your computer?