4

アプリケーションで Squirrel.Windows を使用して、GitHub リポジトリからインストールおよび自動更新しようとしています。次の例を参照してください。

https://github.com/Squirrel/Squirrel.Windows/blob/master/docs/getting-started/1-integrating.md

すべての手順を正常に完了することができました。インストールをテストしましたが、アプリケーションは問題なく開きます。更新して「リリース」したところ、ローカルにインストールされたアプリケーションが期待どおりに更新されました。

これで、ローカル ディレクトリからこれを実行している場合、Squirrel が正常に動作していることはわかっていますが、これは GitHub から実行する必要があります。ここの指示に従っていました

それから、App.xaml.cs のコードを次のように更新しました。

public partial class App : Application
{
    protected override async void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString());

        //  Check for application updates
        using (var mgr = UpdateManager.GitHubUpdateManager("https://github.com/Dartvalince/DiscerningEye"))
        {
            await mgr.Result.UpdateApp();
        }
    }

次に、前と同じプロセスを経て、nupkg を作成し、Squirrel で release コマンドを実行します。ここでは問題ありません。

このすべての後、GitHub までソースの git commit と git push を実行します。GitHub のすべてが最新のコミットで更新されます。ここでいい

次に、GitHub ページで、新しいリリースを作成します。リリースに使用されるタグは、作成された .nupkg で使用されるアセンブリ バージョンと同じです。Releaseリリースに添付するファイルは、 Squirrel で作成したフォルダーからすべてのファイルをドラッグ アンド ドロップします。

よし、これですべてが GitHub にある。次に、これをテストして、ユーザーがすべてのファイルをダウンロードして Setup.exe を実行すると、正しくインストールされて開くことを確認します。これを行うとき、各ファイルをデスクトップのフォルダーにダウンロードし、Setup.exe をクリックします。これを行うと、アプリから予想されるMessageBox.Show(typeof(App).Assembly.GetName().Version.ToString());MessageBox ポップアップが表示され、正しいアセンブリのバージョン番号が表示されますが、何も表示されません。この時点で、コードの更新部分でスタックし、それを通過することはありません。私はそれを一晩そこに置いたままにしておくことができます。タスク マネージャーでプロセスがメモリ内で実行されていることも確認できるので、エラーが発生して閉じられていないことはわかっていますが、CPU 使用率とネットワーク使用率は 0% のままです。

どんな助けでも非常に高く評価されます。

4

1 に答える 1

6

私はこれを理解し、この時点に到達して同じ問題を抱えている可能性のある他の人のために答えを投稿したいと思いました. それはすべてユーザーエラーでした。

まず、App.xaml.cs のUpdateManagerメソッド内にあるため、更新が完了するまでコードの実行が停止していました。更新チェックを のメソッドに移動しました。 OnStartupawaitMainWindowViewModel

そこから、更新コードを try/catch でラップし、MessageBox を使用して例外メッセージを表示しました。「リソースが見つかりませんでした: エラー 404」でした。ソース
に使用していた URL を再確認したところ、リポジトリ ページへの正しいアドレスでした。ただし、問題はURL の末尾にありました。から変えましたGitHubManager
/

https://github.com/dartvalince/DiscerningEye/

https://github.com/dartvalince/DiscerningEye

すべてをテストしましたが、現在は機能しています。これはCheckForUpdateMainWindowViewModel

private async void CheckForUpdate()
{
    try
    {
        using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/dartvalince/DiscerningEye"))
        {
            updateManager = mgr;
            var release = await mgr.UpdateApp();
        }
    }
    catch (Exception ex)
    {
        string message = ex.Message + Environment.NewLine;
        if (ex.InnerException != null)
            message += ex.InnerException.Message;
        MessageBox.Show(message);
    }
}
于 2016-03-25T20:27:37.313 に答える