Próbuję wdrożyć aplikację ClickOnce, ale instalacja kończy się niepowodzeniem na kliencie. Oto dziennik błędów:
PLATFORM VERSION INFO
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.1
System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll : 4.0.31106.0 (Main.031106-0000)
SOURCES
Deployment url : http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
Deployment Provider url : http://MyProduct.com/Download/Workstation/MyProduct%20Front%20Desk.application
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
Application url : http://MyProduct.com/Download/Workstation/Application%20Files/MyProduct%20Front%20Desk_1_0_0_7/MyProduct%20Front%20Desk.exe.manifest
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
IDENTITIES
Deployment Identity : MyProduct Front Desk.application, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil
Application Identity : MyProduct Front Desk.exe, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil, type=win32
APPLICATION SUMMARY
* Installable application.
ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application resulted in exception. Following failure messages were detected:
+ Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.
COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.
WARNINGS
There were no warnings during this operation.
OPERATION PROGRESS STATUS
* [03/17/11 11:51:04] : Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application has started.
* [03/17/11 11:51:04] : Processing of deployment manifest has successfully completed.
* [03/17/11 11:51:04] : Installation of the application has started.
* [03/17/11 11:51:05] : Processing of application manifest has successfully completed.
* [03/17/11 11:51:06] : Found compatible runtime version 4.0.30319.
* [03/17/11 11:51:06] : Request of trust and detection of platform is complete.
ERROR DETAILS
Following errors were detected during this operation.
* [03/17/11 11:51:30] System.Deployment.Application.InvalidDeploymentException (RefDefValidation)
- Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.
Główny plik exe, który muszę wdrożyć MyProductFrontDesk.exe
, jest zależny od MyProductSiteServer.exe
- i wygląda na to, że jest tam zgłaszany błąd: „Odwołanie w manifeście nie jest zgodne z tożsamością pobranego zestawu MyProductSiteServer.exe”.
Który manifest należy poprawić? I jak?
c#
visual-studio-2010
clickonce
Shaul Behr
źródło
źródło
Odpowiedzi:
Wystąpił problem z Visual Studio 2008, który można rozwiązać, nie osadzając domyślnego manifestu - jeden z komentarzy do tego artykułu sugeruje, że problem nadal istnieje w programie Visual Studio 2010.
źródło
<assemblyIdentity/>
element w niestandardowym manifeście można dostosować (lub pominąć, aby umożliwić kompilatorowi emitowanie poprawnej tożsamości zestawu) w.manifest
pliku niestandardowym , umożliwiając określenie takich rzeczy, jak<requestedExecutionLevel/>
bez przerywania ClickOnce.Miałem ten sam problem, kiedy dodałem odniesienie do innego projektu.
Sposób rozwiązania tego problemu polegał na włączeniu ustawień zabezpieczeń ClickOnce we wszystkich przywoływanych projektach, jak wyjaśnił Ian tutaj (wyróżnienie moje):
Uważam, że jest to właściwy sposób na naprawienie tego problemu podczas tworzenia odniesienia do innego projektu w ramach tego samego rozwiązania.
Post na forum, do którego prowadzi link, już wygasł, ale jest dostępny w archiwum tutaj .
źródło
.cproj
plik za pomocą<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Kiedy moje (nieprodukcyjne) wdrożenia ClickOnce przestały działać, zapomniałem o tym.Miałem ten sam problem, ale moje rozwiązanie było zupełnie inne.
Moja aplikacja ClickOnce odwoływała się do innego projektu pliku EXE w moim rozwiązaniu, więc gdy klient ją pobrał i był inny plik EXE, ten nie miał manifestu.
Usunięcie zależności od innego pliku wykonywalnego rozwiązało mój problem.
źródło
Potwierdziłem, że problem istnieje również w programie Visual Studio 2010. Wybranie opcji „Utwórz aplikację bez manifestu” we Właściwościach projektu - Aplikacja - Zasoby rozwiązało problem.
źródło
Może się to również zdarzyć, jeśli w projekcie istnieją dwie różne wersje pakietu NuGet, do których istnieją odwołania w różnych plikach DLL. W moim przypadku używałem frameworka o nazwie Catel i miałem odwołanie do nowszej wersji w jednym pliku DLL niż w innym (przeoczenie), ale spowodowało to, że ClickOnce wypluł ten błąd. Odwołanie się do tej samej wersji rozwiązało problem.
źródło
Miałem ten sam problem, ale moim rozwiązaniem była zmiana „Platformy docelowej” na „x86” (Właściwości projektu -> Karta Kompilacja). Był ustawiony na Dowolny procesor. Gdy tylko zmieniłem ustawienie i ponownie opublikowałem, instalator ClickOnce był w stanie zakończyć.
źródło
Wystąpił ten sam błąd podczas wdrażania z projektem ustawionym na debugowanie. Po zmianie z powrotem na Release nie było błędu.
źródło
Miałem dokładnie ten sam problem. Nie mogłem usunąć zależności, ponieważ była potrzebna w głównym projekcie. Drugi projekt był projektem konsoli.
Przerzuciłem się na Class Library i wszystko się udało.
źródło
Innym obejściem problemu jest to, że nie można zmienić pliku exe zależności z manifestem złej aplikacji (na przykład pochodzącym z pakietu NuGet). Plik binarny można dołączyć jako zawartość z fikcyjnym rozszerzeniem, więc ClickOnce nie próbuje sprawdzać poprawności manifestu, a następnie zmienia nazwę podczas uruchamiania aplikacji.
csproj:
App.xaml.cs:
źródło
Miałem ten sam problem i wypróbowałem tutaj wszystkie poprzednie sugerowane rozwiązania i wszystkie z nich nie działały.
Naprawiłem to, zmieniając lokalizację aktualizacji. Z właściwości projektu -> Publikuj -> Aktualizacje . Zmień lokalizację aktualizacji na opublikowany folder.
źródło
ROZWIĄZANE RÓWNIEŻ DLA ClickOnce .exe wywołującego .exe wywołującego .exe.
Miałem też ten problem, używając VB.NET w Visual Studio 2010.
Mam aplikację ClickOnce Windows Forms, która odwołuje się do drugiej aplikacji Windows Forms, która z kolei odwołuje się do trzeciej aplikacji Windows Forms. (Te druga i trzecia aplikacja są raczej plikami EXE , a nie plikami DLL dla uproszczenia, ponieważ równie prawdopodobne jest, że będą uruchamiane samodzielnie lub wywoływane z przekazanymi do nich właściwościami).
Musiałem skomentować zawartość manifestu zarówno drugiej, jak i trzeciej aplikacji na:
Przewodnik: ręczne wdrażanie aplikacji ClickOnce
Działa doskonale.
źródło
Jeśli masz jeden program główny, który odwołuje się do innego, musisz wykonać sztuczkę „Utwórz aplikację bez manifestu” w programie głównym programu:
Projekt -> Właściwości -> Karta aplikacji -> Zasoby -> Manifest -> lista rozwijana „Utwórz aplikację bez manifestu”
a następnie przełącz się na właściwości projektu przywoływanego programu i powtórz proces.
źródło
Używam programu Visual Studio 2012 w systemie Windows 7 i muszę opublikować rozwiązanie składające się z dwóch projektów.
Jak zauważył Eduardo, oznaczenie obu projektów jako ClickOnce i włączenie aplikacji pełnego zaufania rozwiązuje problem.
źródło
Miałem trochę inny problem, który udało mi się rozwiązać, więc chciałem opublikować. Moje problemy polegały na tym, że uruchomiłem 3 gałęzie z TFS. Zaktualizowałem sterowniki Telerik w jednym z moich oddziałów, ale nie w pozostałych. Po uaktualnieniu kontrolek Telerik we wszystkich 3 gałęziach i ponownym opublikowaniu wszystko zadziałało i ten błąd zniknął.
W tym czasie korzystałem z VS2015.
źródło
To interesujące. Po prostu ponownie wdrażam aplikację i problem został rozwiązany. Może uszkodzenie pliku z powodu sieci.
źródło
Używam
mage.exe
do generowania manifestu. Dodanie tego do mojego.csproj
rozwiązało problem. Możesz także wypróbować-nowin32manifest
flagę kompilatora ; Nie testowałem tego. Nie widzę opcji „Utwórz aplikację bez manifestu” stuartda w programie Visual Studio 2017; Myślę, że to właśnie robi.Mam też to w swoim
.csproj
:źródło
W mojej wersji programu Visual Studio 2017 w wersji 15.6.6 (ale mogło istnieć tam wcześniej) stwierdziłem, że pliki aplikacji nie znajdowały się w projekcie Exe prawym przyciskiem myszy i publikowaniu, ale na karcie Publikuj właściwości projektu, w której można ustawić, które plików aplikacji, które chcesz umieścić w instalacji.
Więc usuń te, które stanowią problem. Jeśli coś jest już zainstalowane na komputerze, na którym zostanie zainstalowana ta aplikacja, nie ma powodu, aby próbować ją ponownie zainstalować, chyba że potrzebujesz odniesienia do uruchomienia. Gdyby zainstalował to, co było już na komputerze, ale do innego folderu, mogłoby to nie zadziałać. Najlepiej jest używać innych aplikacji lub zestawów dll w tej samej lokalizacji, w której zostały wcześniej zainstalowane.
źródło
Kilka minut temu miałem ten sam problem, a poniżej znajdują się kroki, które zastosowałem, aby go rozwiązać.
Klucz
Lista kontrolna
Przejdź do właściwości -> Aplikacja -> Zasoby -> sprawdź ikony i manifest (zarówno dla a i b)
Przejdź do właściwości -> Kompiluj: upewnij się, że a i b znajdują się na tej samej platformie docelowej
Przejdź do właściwości -> Zabezpieczenia i upewnij się, że a i b mają zaznaczone te ustawienia: „Włącz ustawienia zabezpieczeń ClickOnce” i „To jest aplikacja z pełnym zaufaniem”
Przejdź do właściwości -> Publikuj: Zalecam zmianę ścieżki folderu publikacji
źródło
Dokładnie ten sam problem miałem z moją aplikacją VS 2019.
Próbowałem stworzyć aplikację bez manifestu, ale to nie zadziałało.
Co jednak zadziałało, było następujące:
Miejmy nadzieję, że to pomoże!
źródło