2010-08-06 12 views
8

Próbuję dodać funkcję do mojej aplikacji WinForm, która drukuje numer wersji na ekranie głównym. Obecnie mam to:. Numer wersji .NET (wersja instalatora)

txtVersion.Text = ProductVersion.ToString(); 

Co mówi mi o wersji programu - wszystko dobrze i dobrze.

Jednak najlepiej byłoby, gdyby podniósł wersję programu instalacyjnego, który został użyty do utworzenia msi. Czy istnieje sposób na przesłuchanie tego z poziomu zainstalowanego programu lub jakoś przekazanie informacji podczas instalacji?

Odpowiedz

3

Wygląda na to, że chcesz ProductVersion property. Możesz to uzyskać w czasie wykonywania, dzwoniąc pod numer ::MsiGetProductInfo() function, dostarczając kod produktu do zainstalowanego MSI.

Jeśli to nie działa, pisanie ProductVersion do klucza rejestru i czytanie w czasie wykonywania jest dość popularne. Możesz użyć tego klucza rejestru, aby rozwiązać opisane tutaj problemy z ICE38: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

Ale czy Kod produktu nie jest aktualizowany po każdym zwiększeniu numeru wersji? –

+0

Jeśli wykonujesz większe aktualizacje, tak. Jeśli używasz większych aktualizacji, możesz użyć :: MsiEnumRelatedProducts() i przekazać w swoim UpgradeCode (który nie powinien być zmieniany), aby uzyskać kod ProductCode, a następnie użyć innych interfejsów API. Ponownie, nie trywialne, ale nie bardzo trudne. –

0

Możesz zapisać wersję w kluczu rejestru podczas instalacji, a następnie zapytać o klucz rejestru z programu.

0

Można bardzo dobrze z programu instalacyjnego (MSI) poprzez działania niestandardowe przy użyciu Wix3

poniższe linki mogą Ci zacząć

WIX at Sourceforge

Wix Tutorial

+1

Niestandardowe działanie nie jest w tym konieczne, jest wbudowana funkcja [ProductVersion]. Należy unikać niestandardowych działań za wszelką cenę. –

1

Lepiej nie brać aplikację wersja z instalatora, ale weź wersję instalatora z aplikacji (AssemblyInfo.cs), imo.

Powiązane problemy