Obecnie próbuję zaprojektować usługę, która monitoruje i pobiera aktualizacje plików MSI. Usługa będzie działać na wbudowanym koncie z podwyższonymi uprawnieniami (np. SYSTEM) oraz pobierze i zareklamuje MSI.
Ten MSI będzie aktualizacją już zainstalowanej aplikacji. Rozumiem, że skróty itp. Są aktualizowane w reklamie, ale co się stanie, jeśli aplikacja już działa? Co się stanie, jeśli użytkownik uruchomi drugą instancję już uruchomionej aplikacji z tego skrótu?
windows-installer
pixelbadger
źródło
źródło
Odpowiedzi:
To zależy od sposobu kodowania MSI. Na przykład w przypadku WiX należy zaimplementować niestandardowe działanie, aby ustalić, czy aplikacja jest już uruchomiona lub czy plik jest zablokowany do zapisu. Myślę, że domyślną czynnością MSI, jeśli nie masz żadnych niestandardowych akcji, jest to, że po prostu rzuca dialog, taki jak „Przerwij, spróbuj ponownie, nie powiodło się” (lub podobny), jeśli spróbuje zapisać do pliku, który jest zablokowany do edycji (tak jak by to zrobił być, gdy aplikacja jest uruchomiona).
Aby obsłużyć wiele z tych narożnych przypadków, które dobrze znane aplikacje obsługują z wdziękiem (np. Skype, Firefox itp.) - na przykład kończąc działającą instancję - musisz zaimplementować niestandardowy kod. Sam nagi Instalator Windows (to wszystko, co mogę założyć, jeśli masz na myśli ogólny MSI) nie obsługuje natywnie takiej funkcji. Obsługuje raczej niewiele po wyjęciu z pudełka, dlatego istnieją takie rzeczy jak InstallShield.
źródło