41

私が取り組んでいるプロジェクトでは、ClickOnceを使用することは許可されていません。私の上司は、プログラムが「本物」に見えることを望んでいます(インストーラーなどを使用)。

Visual Studio 2012 Professionalをインストールし、InstallShieldインストーラーを試してみましたが、これは間違いなく優れたインストーラーになりますが、アプリケーションを「自動更新」できるようにする方法(つまり、起動時)がわかりません。 up、最新バージョンを使用していることを確認します)。

コードに小さな変更を加えるように求められました。加算を減算に切り替えます。古いバージョンをアンインストールして、小さなものを作成するたびに新しいバージョンを再インストールする必要はありません。このように変更します。

アプリケーションで更新を確認してインストールするにはどうすればよいですか?それとも、これは不可能(または簡単ではない)ですか?

4

6 に答える 6

35

これについてはすでに多くの質問がありますので、それらを参照してください。

アンインストールの必要性を回避するために確実にしたいことの 1 つは、すべてのリリースで同じアップグレードコードを使用するが、製品コードを変更することです。これらの値は、Installshield プロジェクト プロパティにあります。

参考文献:

于 2012-10-08T19:02:22.827 に答える
6

codeplex.com http://autoupdater.codeplex.com/で次のプロジェクトを確認する必要があると思います

このサンプル アプリケーションは、プロジェクト名「AutoUpdater」のライブラリとして C# で開発されています。DLL「AutoUpdater」は、C# Windows アプリケーション (WinForm および WPF) で使用できます。

AutoUpdater には次の機能があります。

  1. 実装と使用が簡単です。
  2. 更新を確認した後、アプリケーションの自動再実行。
  3. ユーザーに対して透過的な更新プロセス。
  4. マルチスレッド ダウンロードを使用してメイン スレッドをブロックしないようにするため。
  5. システムと自動更新プログラムをアップグレードする機能。
  6. 異なるシステムで使用する場合に変更する必要がなく、ライブラリでコンパイルできるコード。
  7. ユーザーは更新ファイルを簡単にダウンロードできます。

使い方?

自動更新可能にするプログラムでは、Main プロシージャで AutoUpdate 関数を呼び出すだけです。AutoUpdate 機能は、Web サイト/FTP にあるファイルから読み取ったバージョンでバージョンをチェックします。プログラムのバージョンが読み取ったものよりも低い場合、プログラムは自動更新プログラムをダウンロードして起動し、関数は True を返します。これは、自動更新が実行され、現在のプログラムを閉じる必要があることを意味します。自動更新プログラムは、更新するプログラムからいくつかのパラメーターを受け取り、必要な自動更新を実行した後、更新されたシステムを起動します。

  #region check and download new version program
  bool bSuccess = false;
  IAutoUpdater autoUpdater = new AutoUpdater();
  try
  {
      autoUpdater.Update();
      bSuccess = true;
  }
  catch (WebException exp)
  {
      MessageBox.Show("Can not find the specified resource");
  }
  catch (XmlException exp)
  {
      MessageBox.Show("Download the upgrade file error");
  }
  catch (NotSupportedException exp)
  {
      MessageBox.Show("Upgrade address configuration error");
  }
  catch (ArgumentException exp)
  {
      MessageBox.Show("Download the upgrade file error");
  }
  catch (Exception exp)
  {
      MessageBox.Show("An error occurred during the upgrade process");
  }
  finally
  {
      if (bSuccess == false)
      {
          try
          {
              autoUpdater.RollBack();
          }
          catch (Exception)
          {
             //Log the message to your file or database
          }
      }
  }
  #endregion
于 2014-05-02T00:34:58.303 に答える
4

最も一般的な方法は、単純なテキスト ファイル (XML/JSON の方が適しています) を Web サーバーに最新のビルド バージョンで配置することです。アプリケーションはこのファイルをダウンロードし、バージョンを確認してアップデーターを起動します。典型的なファイルは次のようになります。

Application Update File (アプリケーションがファイルの種類を認識できるようにする一意の文字列)

バージョン: 1.0.0 (最新のアセンブリ バージョン)

ダウンロード: http://yourserver.com/ ... (ダウンロード版へのリンク)

リダイレクト: http://yournewserver.com/ ... (サーバーアドレスが変更された場合に備えて、このフィールドを使用しました。 )

これにより、クライアントは新しいアドレスを見る必要があることを知ることができます。

その他の重要な詳細を追加することもできます。

于 2012-10-08T19:04:59.177 に答える
1

これはファイルを更新するためのコードですが、インストールするためのものではありません。このプログラムは、ファイルを最新の日付にコピーし、プログラムを自動的に実行するために dos を介して作成されています。あなたを助けるかもしれません

メモ帳を開き、以下のファイルを ext .bat で保存します

xcopy \\IP address\folder_share_name\*.* /s /y /d /q  
start "label" /b "youraplicationname.exe"
于 2013-02-13T04:48:01.857 に答える