wixstdba nie pokazuje postęp dane działanie wiadomości dzisiaj. Ktoś mówił o dodaniu funkcji na liście mailingowej wix-devs, ale to się jeszcze nie stało. Jest to po prostu kwestia dodania kodu takiego jak w zarządzanym przypadku do wixstdba (który jeszcze go nie ma).
Jeśli chcesz tylko wyświetlić nazwę instalowanego pakietu, tak jak robi to wixstdba, będziesz potrzebować wywołań zwrotnych Engine.OnCachePackageBegin()
i Engine.ExecutePackageBegin()
. Te wywołania zwrotne informują o tym, kiedy pakiet zostanie pobrany, a następnie zainstalowany. W ramach argumentów tych wywołań otrzymasz identyfikator pakietu.
Aby uzyskać przyjazną nazwę wyświetlaną, można odczytać numer BootstrapperApplicationData.xml
, który jest automatycznie dołączany obok aplikacji Bootstrapper .dll. Dostępne są elementy WixPackageProperties
, które dostarczają wiele informacji o pakietach w pakiecie, w tym DisplayName
.
--- Przepraszamy, poniżej przedstawiono odpowiedź na pytanie, które nie zostało zadane. ---
Połączenie zwrotne Engine.ExecuteMsiMessage()
jest wywoływane, gdy Instalator Windows wyświetla komunikat (np. Dane akcji lub żądanie monitowania użytkownika o wprowadzenie danych). Postęp jest zapewniany przez trzy różne wywołania zwrotne.
Możesz uzyskać ogólne postępy poprzez wywołanie zwrotne Engine.Progress
. Jest to bardzo gruboziarnisty postęp, który zasadniczo porusza się, gdy każdy pakiet jest buforowany i wykonywany.
Możesz uzyskać ogólny i indywidualny postęp paczki za pośrednictwem Engine.CacheAcquireProgress
. Postęp ten się rusza, gdy każdy pakiet jest pobierany/kopiowany i weryfikowany w celu umieszczenia go w pamięci podręcznej pakietów.
Możesz uzyskać ogólny i indywidualny postęp paczki za pośrednictwem wywołania zwrotnego Engine.ExecuteProgress
. Postęp ten się zmienia, gdy każdy pakiet jest instalowany/naprawiany/odinstalowywany.
Więc Engine.Progress
pokazuje całkowity ogólny postęp i jest bardzo łatwy w obsłudze dla pojedynczego paska postępu, ale pasek postępu nie będzie poruszać się bardzo sprawnie. Możesz uzyskać bardziej płynny ogólny postęp, dodając Engine.CacheAcquireProgress
do Engine.ExecuteProgress
. Uwaga: dostaniesz pasek postępu, który wynosi 200.
Możesz zobaczyć, jak WixBA obsługuje to wszystko w pliku src\Setup\WixBA\ProgressViewModel.cs
.
Dzięki Rob! Postępuję zgodnie z ProgressViewModel.cs, ale problem, który napotykam jest podczas instalowania składników stron trzecich, takich jak SQL Server .. pokazuje mi "1: 2: 1" powyżej paska postępu. Sprawdziłem, co Wiadomość mi oddaje, ale wydaje mi się, że nie ma możliwości pokazania 'DisplayName =" SQL Server "' z '' pakietu. –
Gaurav
Ahh, zaktualizowałem moją odpowiedź, aby uwzględnić te informacje. –
Dzięki Rob! Czy implementacja przy użyciu Engine.OnCachePackageBegin() i Engine.ExecutePackageBegin(), i to działało dobrze, jesteś wielka pomoc! – Gaurav