MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpの基礎 - ClickOnceのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpの基礎 - ClickOnce
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == 開発中はAssemblyVersionでアスタリスク (*) を使用して、各ビルドの追跡を容易にする。<br> <br> 製品リリース時には、両方のバージョンを明示的な数値に固定する。<br> メジャーアップデートや互換性に影響する変更を行う場合は、AssemblyVersionを適切にインクリメントする<br> <br> この2つのバージョン管理を適切に行うことにより、アプリケーションの配布とメンテナンスが効率的に行えるようになる。<br> <br><br> == AssemblyVersion == # 例: AssemblyVersion ("1.0.0.*") <br> * バージョニング ** メジャーバージョン ** マイナーバージョン ** ビルド番号 ** リビジョン番号 **: * (アスタリスク) は自動インクリメントを意味しており、アプリケーションをビルドするたびに自動的に番号が増加する。 **: この番号は、ビルド時の日付と時刻に基づいて生成される。 **: 日付部分 : 2000年1月1日からの経過日数 **: 時刻部分 : 午前0時からの経過秒数を2で除算した値 <br> AssemblyVersionは、.NET Frameworkが参照アセンブリの互換性を判断するために使用する。<br> バージョンが変更される場合、そのアセンブリを参照している他のアプリケーションに影響を与える可能性がある。<br> <br><br> == AssemblyFileVersion == # 例: AssemblyFileVersion ("1.0.0.0") <br> * バージョニング ** 製品の公開バージョンを表すために使用される。 ** Windowsエクスプローラでファイルのプロパティを確認した場合に表示されるバージョン ** 手動で管理する必要があり、自動インクリメントは行われない。 ** 製品のリリース管理やサポート時の参照等に使用する。 <br> 一方、AssemblyFileVersionは純粋に情報提供目的であり、アプリケーションの動作には影響を与えない。<br> 製品管理やユーザサポートで使用される。<br> <br><br> == 使用例 : アプリケーション更新プログラム == <syntaxhighlight lang="c#"> using System; using System.ComponentModel; using System.Deployment.Application; using System.Threading.Tasks; using System.Windows.Forms; public class ApplicationUpdater { // アップデートの進捗状況を通知するためのイベント public event EventHandler<ProgressChangedEventArgs> UpdateProgressChanged; public event EventHandler<AsyncCompletedEventArgs> UpdateCompleted; /// <summary> /// アプリケーションの更新を非同期で確認し、必要に応じて更新を実行します /// </summary> /// <returns>更新が実行されたかどうかを示すブール値</returns> public async Task<bool> CheckAndUpdateAsync() { try { // ClickOnceでデプロイされているかを確認 if (!ApplicationDeployment.IsNetworkDeployed) { throw new InvalidOperationException("このアプリケーションはClickOnceでデプロイされていません。"); } var deployment = ApplicationDeployment.CurrentDeployment; // 更新の確認を非同期で実行 var updateCheckInfo = await Task.Run(() => deployment.CheckForDetailedUpdate()); if (!updateCheckInfo.UpdateAvailable) { return false; // 更新は不要 } // 更新のダウンロードと適用を非同期で実行 await UpdateApplicationAsync(deployment); return true; } catch (DeploymentDownloadException ex) { throw new ApplicationException("アップデートのダウンロード中にエラーが発生しました。", ex); } catch (InvalidDeploymentException ex) { throw new ApplicationException("ClickOnceの展開に問題が発生しました。", ex); } catch (Exception ex) { throw new ApplicationException("アップデートプロセス中に予期せぬエラーが発生しました。", ex); } } /// <summary> /// アプリケーションの更新を非同期で実行し、進捗状況を通知します /// </summary> /// <param name="deployment">ApplicationDeploymentのインスタンス</param> private async Task UpdateApplicationAsync(ApplicationDeployment deployment) { try { // 進捗状況の通知を設定 deployment.UpdateProgressChanged += (sender, args) => { UpdateProgressChanged?.Invoke(this, new ProgressChangedEventArgs(args.ProgressPercentage, $"ダウンロード進捗: {args.BytesCompleted}/{args.BytesTotal} バイト")); }; deployment.UpdateCompleted += (sender, args) => { UpdateCompleted?.Invoke(this, args); }; // 更新の適用を非同期で実行 await Task.Run(() => deployment.Update()); // アプリケーションの再起動が必要な場合の処理 if (MessageBox.Show("アップデートが完了しました。アプリケーションを再起動しますか?", "更新完了", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Application.Restart(); } } catch (Exception ex) { throw new ApplicationException("更新の適用中にエラーが発生しました。", ex); } } } </syntaxhighlight> <br> <syntaxhighlight lang="c#"> // 使用例 public class Program { public static async Task Main() { var updater = new ApplicationUpdater(); // 進捗状況の表示を設定 updater.UpdateProgressChanged += (sender, args) => { Console.WriteLine($"進捗状況: {args.ProgressPercentage}% - {args.UserState}"); }; try { bool updatePerformed = await updater.CheckAndUpdateAsync(); if (!updatePerformed) { Console.WriteLine("利用可能な更新はありません。"); } } catch (ApplicationException ex) { MessageBox.Show($"更新プロセスでエラーが発生しました: {ex.Message}", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:C_Sharp]]
C Sharpの基礎 - ClickOnce
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse