Mamy plik wykonywalny .Net 4.0 ( MyProg.exe ) i powiązane pliki dll, które są wdrażane w udziale sieciowym za pomocą XCopy. MyProg.exe i jego biblioteki dll są niepodpisane.
Mamy je zainstalowane w udziale sieciowym, dzięki czemu wielu użytkowników może korzystać z tej samej wersji programu i ułatwić aktualizację programu. Od wielu lat działało to dobrze dla wielu naszych klientów.
Dla ostatniego klienta folder na maszynie wirtualnej systemu Windows Server 2012 jest udostępniany jako folder sieciowy. Użytkownicy uruchamiają program z innego serwera terminali (Windows Server 2012).
Kiedy zaktualizowaliśmy MyProg.exe (do wersji 2.0 od 1.0), serwer terminali nie uruchamia nowego pliku wykonywalnego, dopóki nie zostanie zrestartowany. Nadal ładuje wersję 1.0, nawet jeśli ten exe nie jest już dostępny. Wygląda na to, że działa buforowana wersja MyProg.exe V1.0 .
- Kroki, które próbowałem:
- Zamknij wszystkie instancje programu
- Skopiuj nowy MyProg.exe do folderu i nadpisz pliki (Zaktualizowana wersja exe z 1.0 do 2.0)
- Sprawdź wersję 2.0 MyProg.exe na stronie Właściwości >> Szczegóły zarówno z serwera plików, jak i serwera terminali
- Sprawdź, czy MyProg.exe V2.0 działa po uruchomieniu z serwera plików za pomocą pliku skrótu (cel: \\ Server \ MyProg \ MyProg.exe )
- Uruchom ten sam plik skrótu (cel: \\ Server \ myprog \ MyProg.exe ) z serwerem terminali i MyProg.exe V1.0 zaczyna
- Zmień nazwę \\ Serwer \ MójProg na \\ Serwer \ MójProg1 i potwierdź, że serwer terminali nie może uruchomić skrótu, ponieważ ten folder już nie istnieje.
- Utwórz nowy plik skrótu (Traget: \\ Server \ MyProg1 \ MyProg.exe ) i potwierdź, że MyProg.exe V2.0 działa na kliencie
- Zmień nazwę folderu \\ Serwer \ MyProg1 z powrotem na \\ Serwer \ MyProg, a uruchomienie oryginalnego pliku skrótu będzie kontynuowało ładowanie MyProg.exe V1.0 do momentu ponownego uruchomienia serwera terminali.
- Sprawdziłem, czy pliki offline są wyłączone na serwerze terminali
- Sprawdziłem, że nie mogę zastąpić pliku wykonywalnego MyProg.exe, gdy program działa na serwerze terminali.
Co jeszcze mogę sprawdzić, aby rozwiązać problem, dlaczego starsza wersja pliku wykonywalnego jest wykonywana, nawet jeśli ten plik już nie istnieje?