1

開発者向けのコピー防止/ライセンス キー システム (C#) を作成しました。これは、開発者アプリケーションのメイン exe を変更して、ユーザーがアプリを起動してライセンス キーを確認したときに最初に実行されるコピー防止ローダーを追加し、次に実際のライセンス キーを起動します。詳細がサーバーで確認されたときのアプリ。

コピー防止アプリがクリック 1 回の展開の出力を取得し、ローダーを追加してマニフェストを再作成し、メインの 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>

マニフェスト ファイルを自動的に再計算する方法、またはこの問題を回避するにはどうすればよいですか?

4

1 に答える 1

2

配置マニフェストを再署名するには、mage ツールを使用する必要があります。

これはすべてMSDNで十分に文書化されています。

于 2013-09-17T10:54:55.030 に答える