Mamy minimalną wersję 'updater', która sprawdza zdalny adres URL pod kątem aktualizacji, pobiera je i zastępuje pliki na dysku przed uruchomieniem prawdziwej aplikacji. Jeśli jednak chcemy zastąpić EXE EXE, to AFAIK mamy dwie opcje:Najlepsza metoda implementacji oprogramowania samoaktualizującego się
1) Shadow Copying Assemblies przy czym .Net utworzy kopię w tle EXE (i wszelkich przywoływanych złożeń) i załaduje je tak, że nie Zespoły cienia można zastąpić i będą używane, gdy aplikacja zostanie uruchomiona.
2) Wskaż, które pliki zostaną zastąpione i zmień ich nazwy/przenieś na dysk. Wygląda na to, że Windows zezwala na zmianę nazwy/przenoszenie zablokowanych plików, dzięki czemu możemy przenosić pliki i kopiować je w nowych złożeniach. Ponownie, po kolejnym uruchomieniu aplikacji uruchomimy nowe złożenia. To podejście jest wymienione here
Czy ta druga metoda jest zalecaną metodą? Czy są jakieś pułapki w tym podejściu?
Jest to prawdopodobnie najlepsza opcja, ponieważ powinna pomóc w standaryzacji aktualizacji/obniżenia poziomu bezpieczeństwa wymagane w systemie Windows Vista i przyszłych wersjach systemu Windows –
Na razie nie używamy ClickOnce, ponieważ łatwiej było korzystać z opisanej przeze mnie metody kopiowania plików, a także mamy zmodyfikowany proces aktualizacji bazy danych SQL, która zostanie zainstalowana wraz z aplikacją. ClickOnce to jednak oficjalne rozwiązanie Microsoftu, a my zajmiemy się nim w przyszłości, dlatego wybieram to jako akceptowaną odpowiedź. Dzięki. – redcalx
ClickOnce jest koszmarem, ponieważ jest nieelastyczny, zbyt skomplikowany, wydaje się nie mieć silnej pomocy Microsoft i jest bardzo specyficzny dla scenariuszy wdrożenia na użytkownika. – jpierson