Klienci Windows używający buforowanej kopii exe .Net 4.0 exe ​​znajdującej się na dysku udziału sieciowego


1

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 .

  1. Kroki, które próbowałem:
    1. Zamknij wszystkie instancje programu
    2. Skopiuj nowy MyProg.exe do folderu i nadpisz pliki (Zaktualizowana wersja exe z 1.0 do 2.0)
    3. Sprawdź wersję 2.0 MyProg.exe na stronie Właściwości >> Szczegóły zarówno z serwera plików, jak i serwera terminali
    4. Sprawdź, czy MyProg.exe V2.0 działa po uruchomieniu z serwera plików za pomocą pliku skrótu (cel: \\ Server \ MyProg \ MyProg.exe )
    5. Uruchom ten sam plik skrótu (cel: \\ Server \ myprog \ MyProg.exe ) z serwerem terminali i MyProg.exe V1.0 zaczyna
    6. 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.
    7. Utwórz nowy plik skrótu (Traget: \\ Server \ MyProg1 \ MyProg.exe ) i potwierdź, że MyProg.exe V2.0 działa na kliencie
    8. 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.
    9. Sprawdziłem, czy pliki offline są wyłączone na serwerze terminali
    10. 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?


Twoje założenie dotyczące pamięci podręcznej byłoby nieprawidłowe. W systemie Windows nie ma mechaniki, która buforowałaby taki plik.
Ramhound,

Odpowiedzi:


0

Skontaktuj się z zespołem pomocy technicznej Microsoft. Wspomnieli, że przyczyną mogą być te ustawienia SMB. Zmodyfikowaliśmy te ustawienia i utrzymamy je podczas następnej aktualizacji.

http://technet.microsoft.com/en-us/library/ff686200(v=WS.10).aspx

Ustawienia z powyższego łącza nie działały.
Więcej szczegółów, które pomogły nam rozwiązać problem: Komputer kliencki to serwer terminali systemu Windows

Ten artykuł z bazy wiedzy zawiera więcej informacji na ten temat:
https://support.microsoft.com/kb/2536487

Aplikacje mogą ulec awarii lub przestać odpowiadać, jeśli inny użytkownik wyloguje się z sesji pulpitu zdalnego w systemie Windows Server 2008 lub Windows Server 2008 R2

Objawy:

Podczas uruchamiania aplikacji z dysku zamapowanego aplikacja może przestać odpowiadać lub zawiesić się dla użytkownika (lub wielu użytkowników), gdy inny użytkownik się wylogowuje. Na przykład:

  1. Jeden serwer to serwer plików, a drugi to serwer hosta sesji zdalnej (serwer terminali).
  2. Folder na serwerze plików jest mapowany do użytku przez zdalnych użytkowników łączących się z serwerem RDS.
  3. Aplikacja zmapowanego udziału jest uruchamiana przez wielu użytkowników.
  4. Jeden użytkownik wylogowuje się, co powoduje, że inni użytkownicy aplikacji doświadczają awarii lub braku odpowiedzi aplikacji.

W szczególności zachowanie to jest powodowane wylogowaniem pierwszego użytkownika lub ostatniego użytkownika aplikacji, w zależności od wersji. Windows Server 2008 napotka ten problem, gdy pierwszy użytkownik wyloguje się; Windows Server 2008 R2 napotka ten problem po wylogowaniu ostatniego użytkownika.

Przyczyna:

Dzieje się tak ze względu na sposób, w jaki readresator obsługuje FCB (blok kontroli plików) dla danego pliku binarnego. W systemie Windows Server 2008 FCB jest własnością użytkownika, który pierwszy otworzył plik, a ten FCB jest używany przez kolejnych użytkowników. Gdy pierwszy użytkownik się wylogowuje, FCB zostaje osierocony, co spowodowało awarię kolejnych użytkowników aplikacji lub brak odpowiedzi. W systemie Windows Server 2008 R2 FCB jest własnością ostatniego użytkownika, który otworzył plik, a poprzedni użytkownicy napotykają problem, jeśli ostatni użytkownik się wyloguje

Obejście:

Zainstaluj aplikację lokalnie na serwerze terminali zamiast na udziale sieciowym


Mam ten sam problem, jak go rozwiązać?
Alejandro-2988924,

1
@ Alejandro-2988924 Musiałem zainstalować program lokalnie. Nie znalazłem rozwiązania. Lokalna instalacja programu była oficjalną rekomendacją firmy Microsoft.
Kishore A,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.