Saya mencoba menerapkan aplikasi ClickOnce, tetapi penginstalan gagal pada klien. Ini log kesalahannya:
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.
Exe utama yang saya perlukan untuk menyebarkan adalah MyProductFrontDesk.exe
, yang memiliki ketergantungan pada MyProductSiteServer.exe
- dan yang tampaknya di mana kesalahan sedang dilemparkan: "Referensi dalam manifes tidak cocok dengan identitas rakitan yang diunduh MyProductSiteServer.exe."
Manifes mana yang perlu dikoreksi? Dan bagaimana?
c#
visual-studio-2010
clickonce
Shaul Behr
sumber
sumber
Jawaban:
Ada masalah dengan Visual Studio 2008 yang diselesaikan dengan tidak menyematkan manifes default - salah satu komentar di artikel tersebut menunjukkan bahwa masalah masih ada di Visual Studio 2010.
sumber
<assemblyIdentity/>
elemen dalam manifes khusus dapat disesuaikan (atau dihilangkan agar kompiler memancarkan identitas perakitan yang benar) di.manifest
file khusus Anda , memungkinkan seseorang untuk menentukan hal-hal seperti<requestedExecutionLevel/>
tanpa merusak ClickOnce.Saya memiliki masalah yang sama ketika saya menambahkan referensi ke proyek lain.
Cara untuk mengatasi ini adalah mengaktifkan Pengaturan Keamanan ClickOnce di semua proyek yang direferensikan seperti yang dijelaskan Ian di sini (penekanan saya):
Saya yakin ini adalah cara yang tepat untuk memperbaikinya saat membuat referensi ke proyek lain dengan solusi yang sama.
Pos forum tertaut telah kedaluwarsa sekarang, tetapi tersedia di arsip di sini .
sumber
.cproj
file dengan<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Ketika penerapan ClickOnce (non-produksi) saya berhenti bekerja, saya telah melupakan semua ini.Saya mengalami masalah yang sama, tetapi solusi saya sangat berbeda.
Aplikasi ClickOnce saya mereferensikan proyek file EXE lain dalam solusi saya, jadi ketika klien mengunduhnya, dan ada file EXE lain, file itu tidak memiliki manifes.
Menghapus ketergantungan pada executable lain memecahkan masalah saya.
sumber
Saya mengkonfirmasi bahwa masalah juga ada di Visual Studio 2010. Memilih "Buat aplikasi tanpa manifest" di Properti Proyek - Aplikasi - Sumber Daya memecahkan masalah.
sumber
Ini juga dapat terjadi jika Anda memiliki dua versi berbeda dari paket NuGet yang direferensikan dalam file DLL yang berbeda dalam proyek Anda. Dalam kasus saya, saya menggunakan kerangka kerja yang disebut Catel, dan saya memiliki versi yang lebih baru yang direferensikan dalam satu file DLL daripada yang lain (pengawasan), tetapi ini menyebabkan ClickOnce mengeluarkan kesalahan ini. Mengacu pada versi yang sama menyelesaikan masalah.
sumber
Saya memiliki masalah yang sama, tetapi solusi saya adalah mengubah 'Target platform' menjadi 'x86' (Project Properties -> Build Tab). Itu disetel ke Semua CPU. Segera setelah saya mengubah pengaturan dan menerbitkan ulang, penginstal ClickOnce dapat menyelesaikannya.
sumber
Saya mengalami kesalahan yang sama saat menerapkan dengan proyek yang disetel ke Debug. Ketika diubah kembali ke Rilis, tidak ada kesalahan.
sumber
Saya memiliki masalah yang persis sama. Saya tidak dapat menghapus ketergantungan tersebut karena diperlukan oleh proyek utama. Proyek kedua adalah proyek konsol.
Saya berubah ke Perpustakaan Kelas , dan kemudian semuanya bekerja.
sumber
Solusi lain, jika dependensi exe dengan manifes aplikasi yang buruk tidak dapat diubah (katakanlah berasal dari paket NuGet). Biner dapat dimasukkan sebagai konten dengan ekstensi tiruan sehingga ClickOnce tidak mencoba memvalidasi manifes dan kemudian berganti nama saat aplikasi dimulai.
csproj:
App.xaml.cs:
sumber
Saya memiliki masalah yang sama, dan saya mencoba semua solusi yang disarankan sebelumnya di sini, dan semuanya tidak berfungsi.
Saya memperbaikinya dengan mengubah lokasi pembaruan. Dari properti proyek -> Publikasikan -> Pembaruan . Ubah lokasi pembaruan ke folder yang Anda terbitkan.
sumber
JUGA TERSEDIA UNTUK ClickOnce .exe memanggil .exe memanggil .exe.
Saya mengalami masalah ini juga, menggunakan VB.NET di Visual Studio 2010.
Saya memiliki aplikasi ClickOnce Windows Forms yang mereferensikan aplikasi Windows Forms kedua yang merujuk pada aplikasi Windows Forms ketiga. (Aplikasi kedua dan ketiga ini adalah file EXE daripada file DLL untuk kesederhanaan, karena keduanya sama-sama dapat dijalankan secara mandiri atau dipanggil dengan properti yang diteruskan kepadanya.)
Saya harus mengomentari KEDUA konten manifes aplikasi kedua dan ketiga per:
Panduan: Menerapkan Aplikasi ClickOnce Secara Manual
Ini bekerja dengan sempurna.
sumber
Jika Anda memiliki satu program utama yang mereferensikan program lain, maka Anda harus melakukan trik "Buat aplikasi tanpa manifes" pada Program program utama:
Proyek -> Properti -> Tab Aplikasi -> Sumber Daya -> Manifes -> tarik-turun "Buat aplikasi tanpa manifest"
dan kemudian beralih ke Properti Proyek program yang direferensikan dan ulangi prosesnya.
sumber
Saya menggunakan Visual Studio 2012 di Windows 7 dan perlu menerbitkan solusi yang terdiri dari dua proyek.
Seperti yang ditunjukkan Eduardo, menandai kedua proyek sebagai ClickOnce, dan mengaktifkan Aplikasi Kepercayaan Penuh menyelesaikan masalah.
sumber
Saya memiliki sedikit masalah lain yang dapat saya selesaikan sehingga saya ingin memposting. Masalah saya adalah saya menjalankan 3 cabang dari TFS. Saya telah meningkatkan kontrol Telerik di salah satu cabang saya tetapi tidak di yang lain. Setelah saya meningkatkan kontrol Telerik di semua 3 cabang dan menerbitkannya kembali, itu berfungsi dan kesalahan ini hilang.
Saya menggunakan VS2015 pada saat itu.
sumber
Ini menarik. Saya baru saja menerapkan ulang aplikasi dan masalah terpecahkan. Mungkin file rusak karena jaringan.
sumber
Saya gunakan
mage.exe
untuk menghasilkan manifes saya. Menambahkan ini ke saya.csproj
memperbaiki masalah. Anda juga dapat mencoba-nowin32manifest
flag compiler ; Saya belum mengujinya. Saya tidak melihat stuartd "Buat aplikasi tanpa manifest" di Visual Studio 2017; Saya pikir inilah yang dilakukannya.Saya juga memiliki ini di saya
.csproj
:sumber
Dalam versi Visual Studio 2017 saya, versi 15.6.6 (tetapi mungkin sudah ada sebelumnya) saya menemukan bahwa File Aplikasi tidak ada di Proyek Klik Kanan Exe dan Publikasikan, tetapi di bawah Tab Penerbitan Properti Proyek tempat Anda dapat mengatur yang mana File Aplikasi yang ingin Anda masukkan ke dalam instalasi.
Jadi keluarkan yang bermasalah. Jika ada sesuatu yang sudah diinstal di komputer tempat aplikasi ini akan diinstal, tidak ada alasan untuk mencoba menginstalnya kembali, kecuali jika Anda memerlukan referensi untuk menjalankannya. Jika itu untuk menginstal apa yang sudah ada di pc, tetapi ke folder yang berbeda itu mungkin tidak berfungsi. Yang terbaik adalah menggunakan aplikasi lain atau rakitan dll ke lokasi yang sama seperti yang diinstal sebelumnya.
sumber
Saya mengalami masalah yang sama beberapa menit yang lalu, dan di bawah ini adalah langkah-langkah yang saya gunakan untuk menyelesaikannya.
Kunci
Daftar Periksa
Arahkan ke properti -> Aplikasi -> Sumber Daya -> centang ikon dan manifes (untuk a dan b)
Arahkan ke properti -> Build: pastikan a dan b berada di platform target yang sama
Arahkan ke properti -> Keamanan dan pastikan bahwa a dan b memiliki pengaturan ini diperiksa: "Aktifkan pengaturan keamanan ClickOnce" dan "Ini adalah aplikasi kepercayaan penuh"
Arahkan ke properti -> Publikasikan: Saya sarankan Anda mengubah jalur folder penerbitan
sumber
Saya mengalami masalah yang sama persis dengan aplikasi VS 2019 saya.
Saya telah mencoba membuat aplikasi tanpa manifes, tetapi tidak berhasil.
Namun, apa yang berhasil adalah sebagai berikut:
Semoga ini membantu!
sumber