C# 我想用另一个应用程序替换click once部署应用程序的主exe,但清单赢了';别让我

C# 我想用另一个应用程序替换click once部署应用程序的主exe,但清单赢了';别让我,c#,hash,clickonce,manifest,C#,Hash,Clickonce,Manifest,我为开发者创建了一个拷贝保护/许可证密钥系统(C#),它修改开发者应用程序的主exe,添加一个拷贝保护加载程序,当用户启动应用程序检查其许可证密钥时,该加载程序首先运行,然后在服务器验证详细信息后启动实际应用程序 我希望允许我的复制保护应用程序获得单击一次部署的输出,添加加载程序并重新创建清单以反映对主exe的更改,以便可以使用Setup.exe正常安装修改后的应用程序 我已尝试将清单中的程序集名称更改为加载程序的名称,并按照清单中的说明修改exe的大小,虽然这解决了初始错误,但现在的问题是,计

我为开发者创建了一个拷贝保护/许可证密钥系统(C#),它修改开发者应用程序的主exe,添加一个拷贝保护加载程序,当用户启动应用程序检查其许可证密钥时,该加载程序首先运行,然后在服务器验证详细信息后启动实际应用程序

我希望允许我的复制保护应用程序获得单击一次部署的输出,添加加载程序并重新创建清单以反映对主exe的更改,以便可以使用Setup.exe正常安装修改后的应用程序

我已尝试将清单中的程序集名称更改为加载程序的名称,并按照清单中的说明修改exe的大小,虽然这解决了初始错误,但现在的问题是,计算的哈希与新的exe不匹配,我得到以下错误:

    ERROR DETAILS
Following errors were detected during this operation.
* [17/09/2013 11:40:50] System.Deployment.Application.InvalidDeploymentException (HashValidation)
    - Application manifest has either a different computed hash than the one specified or no hash specified at all. 
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
        at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, Uri& appSourceUri, String& appManifestPath)
        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)
    --- Inner Exception ---
    System.Deployment.Application.InvalidDeploymentException (HashValidation)
    - File, SkyCallerPro.exe.manifest, has a different computed hash than specified in manifest.
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.ComponentVerifier.VerifyFileHash(String filePath, Hash hash)
        at System.Deployment.Application.ComponentVerifier.VerifyFileHash(String filePath, HashCollection hashCollection)
        at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
清单文件中有问题的部分是以下部分:

    <hash>
    <dsig:Transforms>
      <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
    <dsig:DigestValue>JARQfZ0fUMiJDudVERGdBFkgqwLLd/gwnyTkZhMQydQ=</dsig:DigestValue>
    </hash>

Jarqfz0fumijdudvergdbfkgqwld/gwnyTkZhMQydQ=

如何自动重新计算清单文件或绕过此问题?

您需要使用mage工具退出部署清单


这些都在。

功能中有很好的记录,而不是一个bug。ClickOnce检查可执行文件从您的计算机传输到用户的计算机时是否未被篡改。你篡改了它。你被你自己的复制保护方案打败了:)我需要用一下点击!我将使用mage工具,看看我得到了什么,我相信这是可能的。对于您的帮助,我使用以下工具完成了此操作:[[1]:感谢您的帮助,我使用以下工具完成了此操作: