Począwszy od wersji 1.1, FreeCAD natywnie wspiera wersjonowane podkatalogi konfiguracji i danych aplikacji. Jeśli istnieje już plik konfiguracji podczas pierwszej instalacji nowej wersji, pojawi się ekran oferujący migrację do struktury wersjonowanej poprzez skopiowanie istniejącej konfiguracji, aby kontynuować używając "współdzielonej" konfiguracji z poprzedniej wersji lub rozpocząć z nową domyślną konfiguracją.
Domyślną i zalecaną opcją jest dokonanie migracji istniejącej konfiguracji do nowej dla nowej wersji programu FreeCAD. Konsekwencją jest to, że wszystkie zainstalowane dodatki, pliki konfiguracyjne i inne dane użytkownika są duplikowane do nowej ścieżki dla nowej wersji. Oznacza to, że jeśli starsza wersja programu FreeCAD jest uruchamiana, będzie mogła korzystać ze starszej konfiguracji i dodatków, zachowując kompatybilność i zapobiegając wszelkiej utracie danych lub potencjalnie niespodziewanemu zachowaniu gdy stara wersja próbuje załadować nowe opcje konfiguracji, zaktualizowane dodatki itd.
Użytkownicy z bardzo dużymi katalogami danych aplikacji (przykładowo ze względu na instalację Biblioteki Części) mogą nie chcieć duplikować wszystkich danych i preferować kontynowanie użycia ostatniego znalezionego folderu konfiguracji (dla wersji przed 1.1 jest to katalog bez wersjonowania). To powoduje ryzyko, że nowa konfiguracja lub dodatek uniemożliwi prawidłowe uruchomienie starszej wersji programu FreeCAD.
Ta opcja tworzy nowy wersjonowany katalog konfiguracji, ale nie kopiuje niczego do niego, uruchamiając nową instalację z czystymi domyślnymi ustawieniami "fabrycznymi".
Jeśli Twój dodatek polegał na rejestrowaniu/przechowywaniu bezwzględnej lokalizacji swoich plików (zamiast ich lokalizacji względem userAppDataDir
lub configDir
), będziesz musiał wykryć, że pliki zostały przeniesione i zaktualizować swoje przechowywane zmienne konfiguracji. Wyeksponowanych jest kilka metod Pythona pomagających w tym procesie, przede wszystkim FreeCAD.ApplicationDirectories.versionStringForPath(major, minor)
oraz FreeCAD.ApplicationDirectories.versionStringForPath.usingCurrentVersionConfig(pathToCheck)
.