SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

VB.NETによるオンラインアップデート

インターネット接続を利用したアップデートの配信

  • X ポスト
  • このエントリーをはてなブックマークに追加

タスク2 当該アプリケーション向けのアップデートがあるかどうか確認する

...........
XMLFunction.OpenXMLDoc(Updaterfile)
XMLFunction.XMLSNode("/updates")
TotalUpdates = Val(XMLFunction.GetNodeVal("total"))
If TotalUpdates > LastUpdate Then
.............

 ここでは、タスク2(アップデートがあるかどうかの確認)を行っています。XMLファイルには複数のデータ項目があり、ファイルをリストに追加するとき、そのアップデート番号を1ずつインクリメントします。アップデートされた各ファイルに、このアップデート番号が与えられ、アプリケーションは各ファイルがどのアップデートに対応するものかを知るというわけです。ファイル内の最終アップデートとアップデート番号を比較することにより、そのファイルのダウンロードが必要かどうかを判断することができます。

.............
   FileList = XMLFunction.GetFiles
   For Each ThisFile As XMLFunc.XmlFunctions.FileDetails In FileList
      If ThisFile.Update > LastUpdate Then
         Updaterfile = AppPath & "\" & ThisFile.Local
         Serverfile = "http://" & UpdateSite & "/" _
            & ThisFile.Server
         LblText.Text = "Downloading " & ThisFile.File & _
         " from server" & vbCrLf & " Please wait for update to complete"
         GBLbl.Refresh()
         If File.Exists(Updaterfile) Then File.Delete(Updaterfile)
         My.Computer.Network.DownloadFile(Serverfile, Updaterfile)
      End If
   Next
End If
...............

タスク3 必要なファイルを、それぞれ対応する場所にダウンロードする

 新しいアップデートがあるとわかった場合は、タスク3(ファイルのダウンロードとインストール)を行います。各ファイルは番号で特定のアップデートと関連付けられているので、個々のファイルをループで反復的に処理し、そこで指定されているアップデートが読み込まれていないか確認するだけで済みます。この方法には1回のセッションで複数のアップデートをダウンロードできるメリットもあります。また、複数のアップデートに同じファイルが含まれている場合、開発者が常にそのファイルのオリジナルのエントリを編集して最終アップデート番号を設定するようにすれば、ユーザーが無駄なアップデートをダウンロードしなくて済むので帯域幅の節約にもなります。

 XMLのサンプルを見ると、サーバファイルの拡張子とターゲットファイルの拡張子が違ってることに気づきます。Webホスティングサーバによっては、一部のファイル拡張子がローカルなデータと見なされ、それをダウンロードするHTTP要求がブロックされることがあるからです。これは主としてサーバのセキュリティを考慮した措置です。サーバを攻撃にさらされないようにするために、ファイルに対してダウンロードしても安全と考えられている名前を与え、それを保存するときはオリジナルの名前を使用します。DATファイルのダウンロードはサーバによってブロックされます。これには複数のプロジェクトのファイルを同じサーバに格納できるメリットもあり、その場合、複数のプロジェクトの同名のファイルの間に交雑親和性がないことを特に意識しなくて済みます。

...............
         If Updated Then
            LblText.Text = "Update succesfully installed." & vbCrLf & _
            "Application will Exit in a few seconds"
            LastUpdate = TotalUpdates
         Else
            LblText.Text = "No Updates to load." & vbCrLf & _
            "Application will Exit in a few seconds"
         End If
      Catch ex As Exception
         LblText.Text = "Error during download" & vbCrLf & _
         "Application will Exit in a few seconds"
      End Try
      TimeOut = False
      TimeDelay = 10
      Timer.Interval = 1000
      Timer.Enabled = True
      Retry = False
      Button3.Enabled = False
      Button4.Enabled = True
      While Not (TimeOut Or Canceled)
         System.Windows.Forms.Application.DoEvents()
      End While
   End If
   LoadApp()
End Sub

タスク4 アップデート後のアプリケーションを開始する

 最後に、ユーザーに結果を通知し、メインアプリケーションを開始します。最終アップデートをシステムのファイルまたはレジストリに格納する必要があることも忘れないでください。

 オートアップデータには、ここで述べた以外にも、多くのもっと高度な機能を与えることができます。しかし、プロジェクトをできるだけ単純化し、バグの発生を可能な限り抑えることを基本とすべきです。残念ながら、このオートアップデータ自体をアップデートすることはできないからです。

おわりに

 この簡単なベースコードをプロジェクトに付加することで、クライアント/ユーザーに対するアップデートの配信機能を大きく改善でき、多くの人々が求めている価値を付加することになります。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Richard Newcombe(Richard Newcombe)

Commodore 64の時代からコンピュータに親しみ、今では優れたプログラマー、デザイナーとして活躍。30代前半で、コンピュータから離れることはめったになく、コンピュータ関連の問題ならばいつでも助力とアドバイスを惜しまない人物。最近は本サイトに関するいくつかのプロジェクトに従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3560 2009/03/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング