대다수의 유럽 국가를 포함한 일부 국가들에서 자동 업데이트가 오작동하는 문제를 발견하였습니다.
원인은, DFAssist는 20170901.1 처럼 되어있는 버전을 decimal로 파싱해서 최신 버전과 비교를 하는데,
한국과 미국 등은 소수점을 . 을 이용해 마킹하기 때문에 20170901.1 은 올바른 실수였고 파싱에 문제가 없었지만
유럽 등은 소수점을 , 혹은 띄어쓰기를 이용해 마킹하는 경우도 많기 때문에
OS의 표기 설정이 유럽으로 되어 있다면 20170901.1 의 파싱을 실패해
바로 catch로 빠져나가 더 이상 업데이트를 진행하지 못 하던 문제였습니다.
다행히 c#의 decimal.Parse 함수에는 IFormatProvider 를 받는 오버라이드가 있어서,
기존 decimal.Parse(version) 코드를 decimal.Parse(version, new CultureInfo("en-us")) 로 변경하는 식으로 문제를 해결했습니다.
일단은 원인을 파악하고 문제를 해결했지만, 혹시라도 비슷한 상황에 처하실 분이 계실 때를 대비해 정보 공유차 남겨놓습니다.
대다수의 유럽 국가를 포함한 일부 국가들에서 자동 업데이트가 오작동하는 문제를 발견하였습니다.
원인은, DFAssist는 20170901.1 처럼 되어있는 버전을 decimal로 파싱해서 최신 버전과 비교를 하는데, 한국과 미국 등은 소수점을 . 을 이용해 마킹하기 때문에 20170901.1 은 올바른 실수였고 파싱에 문제가 없었지만
유럽 등은 소수점을 , 혹은 띄어쓰기를 이용해 마킹하는 경우도 많기 때문에 OS의 표기 설정이 유럽으로 되어 있다면 20170901.1 의 파싱을 실패해 바로 catch로 빠져나가 더 이상 업데이트를 진행하지 못 하던 문제였습니다.
다행히 c#의
decimal.Parse
함수에는IFormatProvider
를 받는 오버라이드가 있어서, 기존decimal.Parse(version)
코드를decimal.Parse(version, new CultureInfo("en-us"))
로 변경하는 식으로 문제를 해결했습니다.일단은 원인을 파악하고 문제를 해결했지만, 혹시라도 비슷한 상황에 처하실 분이 계실 때를 대비해 정보 공유차 남겨놓습니다.