2010-08-06 13 views
8

기본 화면에 버전 번호를 인쇄하는 winforms 응용 프로그램에 기능을 추가하려고합니다. 나는 현재이 있습니다.NET 버전 번호 (설치자 버전)

나에게 프로그램의 버전을 알려줍니다
txtVersion.Text = ProductVersion.ToString(); 

- 잘 좋은.

그러나 내가하고 싶은 것은 msi를 만드는 데 사용 된 설치 프로그램 버전을 선택하는 것입니다. 설치된 프로그램 내에서이를 조사하거나 설치 중에 정보를 전송하는 방법이 있습니까?

답변

3

ProductVersion property을 원하는 것처럼 들립니다. 런타임에 설치 한 MSI에 대해 ProductCode를 제공하는 ::MsiGetProductInfo() function으로 전화하면됩니다.

당신을 위해 밖으로 작동하지 않으면 ProductVersion을 레지스트리 키에 쓰고 런타임에 읽을 수 있습니다. 이 레지스트리 키를 사용하여 여기에 설명 된 ICE38 문제를 해결할 수 있습니다. http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

그러나 버전 번호가 증가 할 때마다 ProductCode가 업데이트되지 않습니까? –

+0

주요 업그레이 드를 수행하는 경우 예. 주요 업그레이드를 사용하는 경우 :: MsiEnumRelatedProducts()를 사용하고 UpgradeCode (변경하지 않아야 함)를 전달하여 ProductCode를 가져온 다음 다른 API를 사용할 수 있습니다. 다시 말하지만, 사소하지는 않지만 정말로 어렵지는 않습니다. –

0

설치 중에 레지스트리 키에 버전을 저장하고 프로그램의 레지스트리 키를 쿼리 할 수 ​​있습니다.

0

당신은 아주 잘 Wix3

를 사용하여 사용자 지정 작업을 통해 설치 프로그램 (MSI)에서 할 수

다음 링크를 얻을 수 있습니다 당신은이 앱을하지 더 나은

WIX at Sourceforge

Wix Tutorial

+1

[ProductVersion]이 내장되어 있으므로 사용자 지정 작업을 수행하지 않아도됩니다. –

1

시작 버전을 설치 프로그램에서 가져 오지만 설치 프로그램 버전은 응용 프로그램 (AssemblyInfo.cs)에서 가져옵니다.