追加の.zipファイルを使用したWPF展開

c# clickonce deployment wpf
追加の.zipファイルを使用したWPF展開

スタンドアロンのWPFアプリケーションの展開で問題に直面しています。 展開に含めるPDFファイルの巨大な.zipファイルがあります。 これらをワンクリック展開に追加し、インストーラーにユーザーのマシンの特定のディレクトリにファイルを解凍させる方法はありますか?

だから基本的に、私が探しているのは:

ユーザーがWPFアプリケーションをインストールするWPFインストーラーはPDFをC:/ SomeDirectory / PDFSに解凍します。WPFアプリケーションはこれらのPDFSをリソースとして使用できるようになりました。

ありがとうございます。

  1  0


ベストアンサー

設計上、ClickOnceではインストール中に任意の手順を実行できません。 ただし、必要なアクセス許可があれば、ClickOnceアプリケーションを初めて実行するときに実行できることについて制限はありません。

最も一般的な解決策は、アプリケーションの起動時に大きなzipファイルが解凍されているかどうかを確認し、そうでない場合はPDFをディレクトリに解凍することです。 これは、SharpZipLibまたはその他の方法で実行できます。

別の解決策は、ファイルを解凍し、ClickOnceインストールも実行する非ClickOnceブートストラップ実行可能ファイルを使用することです。

ClickOnceがカスタムインストール手順を許可しない理由の説明、およびその回避方法の詳細については、http://www.softinsight.com/bnoyes/2005/07/04/HowToHandlePrerequisitesAndCustomInstallStepsForAClickOnceDeployedApplication.aspx [この記事]を参照してください。 。

PDFがClickOnceアプリケーションディレクトリ内にあることに問題がない場合、3番目のオプションは、それらをClickOnce展開自体に含めることです。 これの短所は、圧縮を緩めることです(HTTP経由で展開する場合、サーバーがファイルを圧縮する場合があることを除く)。

アプリケーションが内部でPDFファイルを使用している場合、別の解決策は、マニフェストに大きな.zipファイルを含めて、必要なときに個々のPDFを解凍することです。 たとえば、SharpZipLibを使用して解凍し、 `File.WriteAllBytes(Path.GetTempFileName()+” .pdf “、…​)`を使用して書き出すか、それらを使用するコンポーネントに直接読み込むことができます。 一時ディレクトリに書き込む場合、使用しなくなったファイルをクリーンアップするメカニズムが必要になります。

ClickOnceアプリケーションは自己完結型で完全にアンインストールされるため、これらの最後の2つのソリューションのいずれかは、PDFを固定パスにコピーするよりもクリーンです。

3


タイトルとURLをコピーしました