29

Python で書かれたプログラムに変更をプッシュする最良の方法は何ですか? 定期的に更新される Python で書かれたソフトウェアがあります。これを行う最良の方法は何ですか?すべてのマシンに Windows 7 が搭載されます。

また、私の質問の曖昧さを許してください。更新手順を実装する必要があるのはこれが初めてです。追加してほしい詳細を自由に述べてください。

4

3 に答える 3

20

プログラムをまだ InnoSetupでパッケージ化していない場合は、これに切り替えることを強くお勧めします。これには、この種の作業を簡単にする機能があるからです。InnoSetup スクリプトで、ファイルが既に存在する場合 (つまり、内部構成ファイルなどがある場合) に更新してはならないファイルなど、特別な状況を指定できます。

次に、クライアント マシンがアプリの新しいバージョンを検出できるように、現在のリリースのバージョン番号と最新バージョンのインストーラー exe への URL を含む非常に小さなファイルを公開 Web サーバーに保持します。このファイルを有効にするには、プログラムの新しいバージョンをリリースするたびに、このファイル、InnoSetup スクリプト内のバージョン番号、およびプログラム内のある種の APP_VERSION 定数を更新する必要があります。

次に、アップデーターの次の部分を自分で処理する必要があります。

  1. HTTP 経由で Web サーバーから現在のバージョンのファイルを取得し、そこにあるバージョン番号をアプリ独自の APP_VERSION と比較することで、新しいバージョンが利用可能になったことを検出します。クライアント マシンがインターネットにアクセスできない場合は正常に失敗し、要求の実行中に GUI をブロックしない方法でこのクエリを実行してください (クエリを待機させるネットワークの問題がある場合)。タイムアウトのための長い間)。
  2. 新しいバージョンが利用可能な場合、更新するかどうかをユーザーに尋ね、ユーザーが「はい」と答えた場合は、更新されたインストーラーを TEMP ディレクトリにダウンロードします。使用している GUI ツールキットに応じて、ダウンロード中に進行状況ダイアログを表示するためのさまざまなメカニズムがあります。インストーラーは少なくとも 1 MB である可能性が高いため、これは良い考えです。
  3. アプリを閉じ、バックグラウンドで特別な更新スクリプトを実行してから、アプリを再起動します。

更新スクリプトは、元のプロセスが完全に終了するまで待機します (これを行う最も簡単な方法は、元のプロセスの PID をコマンド ライン引数として渡し、更新スクリプトがクエリ シグナル 0 をそのプロセスに毎秒程度送信することです)。その後、おそらく「お待ちください...」ダイアログをユーザーに表示しながら、インストーラーをバックグラウンドでサイレントに実行できます。インストーラーが完了し、リターン コードで成功が報告されると、アップデーターはプログラムを再起動できます。

アプリの大きさにもよりますが、これは git や別の SCM を使用する方法よりも帯域幅を浪費します。SCM では、変更されたファイルのみがダウンロードされるのに対し、このアプローチではすべての更新でアプリの最新バージョンのインストーラー全体がダウンロードされます。ただし、通常の Web サーバー以外に特別なサーバー機能を必要とせず、ユーザーのコンピューターに SCM クライアントを特別にインストールする必要がないという利点があります。

さらに、InnoSetup は一般的にクールです。:-)

于 2011-08-04T01:38:21.023 に答える
8

git や subversion などのソース管理プログラムを使用することをお勧めします。また、全員がコードを閲覧しても問題ない場合は、コードを github に投稿して、誰でもそこから引っ張ることができます。プライベートにすることもできますが、それには料金を支払う必要があり、すべてのユーザーも github アカウントを作成して、自分の git インストールでセットアップする必要があります。

ソース管理プログラムを使用する場合、他の人はコマンドを実行して手動で編集をプルする必要がありますが、これを行うスクリプト pr バッチ ファイルを作成し、起動時または定期的に実行することができます。

明確にするために、これを行いたい場合は、SSH をサポートするサーバーにコードを配置し、git をセットアップする必要があります。サーバーのセットアップをすべてやりたくない場合は、github をお勧めします。

git- http://git-scm.com/ (Windows バージョンの場合は、ダウンロードに移動して msysGit を選択します)

github - https://github.com/

于 2011-08-03T22:09:51.213 に答える