5월, 2016의 게시물 표시

C# 프로그램 자동 업데이트 구현

이미지
  안녕하세요? 혼살입니다. 이번 포스트는 C#과 웹서버, PowerShell script를 사용한 아주 간단한 자동 업데이트 구현 방법을 알려드리겠습니다.   우선, 이전 포스트 를 참고해 버전 정보를 자동으로 텍스트파일에 써주시고, 그 텍스트 파일을 웹서버에 올려줍니다. 애초에 텍스트 파일을 바로 웹서버 디렉터리에 써주시면 더 편하겠죠?   그리고 매우 간단한 버전 체크 메소드를 하나 만들어주세요. private static void CheckVersion() { var filename = System.Reflection.Assembly.GetExecutingAssembly().Location; var version = System.Diagnostics.FileVersionInfo.GetVersionInfo(filename).FileVersion; var req = HttpWebRequest.CreateHttp("http://honsal.dyndns.info:8008/version.txt"); using (var res = req.GetResponse()) { using (var stream = res.GetResponseStream()) { using (var reader = new StreamReader(stream)) { var remoteVersion = reader.ReadLine().TrimEnd(); if (version != remoteVersion) { Update(); } } } } } filename: 현재 응용 프로그램 경로(확장자까지) version: 현재 응용 프로그램 버전(string) req

C# 빌드 후 이벤트로 버전 정보를 텍스트 파일에 써보자

이미지
  이번 포스트에는 Visual Studio의 빌드 후 이벤트(Post-Build Event)와 PowerShell script를 사용해 파일 버전 정보를 자동으로 텍스트파일에 기록하는 방법을 알려드리도록 하겠습니다. 응용하면 자동 업데이트 프로그램 을 아주 간단하게 만들 수도 있습니다. 이건 다음 포스트에서 설명하도록 하죠. 빌드할 때마다 버전 정보 자동 업데이트   우선, 필수는 아니지만 버전 정보가 알아서 빌드할 때마다 업데이트 되도록 설정해보겠습니다. 버전 정보를 직접 설정하고 싶은 분은 이 단계를 건너 뛰셔도 됩니다.   위와 같이 Properties/AssemblyInfo.cs의 AssemblyVersion 및 AssemblyFileVersion  부분의 AssemblyFileVersion 행을 주석처리 하시고 AssemblyVersion을 1.0.* 으로 바꿔주세요. 이렇게 하면 빌드할 때마다 수정 사항이 있을 경우 버전이 자동으로 올라갑니다. 버전 정보를 텍스트 파일에 쓰기   이제 버전 정보를 텍스트 파일에 쓰는 일만 남았습니다. 빌드할 때마다 업데이트 된 버전 정보를 텍스트 파일에 쓰는 작업인데, PowerShell 스크립트 로 간단하게 해결할 수 있습니다. Set-ExecutionPolicy Unrestricted (Get-Item "F:\Projects\SELF_UPDATE_TUTORIAL\SELF_UPDATE_TUTORIAL\bin\Debug\SELF_UPDATE_TUTORIAL.exe").VersionInfo.FileVersion > "G:\Server\version.txt"   우선 위와 같은 스크립트를 원하는 ps1 확장자로 저장해주세요. 저는 version.ps1로 저장했습니다. Get-Item 뒤의 경로를 자신의 Debug 또는 Release 폴더의 응용 프로그램 경로로 변경 한 뒤, 꺽쇠 뒤의 경로를 버전 정보 텍스트 파일이 쓰여질 경로 로 바