2009-04-30 10 views
11

私はWinFormsプロジェクトにプライマリ出力として単一の.exeファイルを用意しています。私は配布プロジェクトを使用して配布していますが、新しいバージョンがインストールされているときに.exeファイルが更新されていないため、新しいバージョンを手動でアンインストールしてインストールするようユーザーに依頼する必要があります。私は、デプロイメントプロジェクトのバージョンをインクリメント(および更新し、私は(展開プロジェクトの主要出力)出力プロジェクト デプロイメントプロジェクトが更新されていません.exe

  • のアセンブリバージョンをインクリメント

    • を:ここで

      は私がやってんですよ展開プロジェクトは、以前のバージョン

    • .exeファイルの「パーマ」プロパティを削除するように設定されている
    • 促さ製品コード)が偽
    に設定されています

    私はこれを成功させる前にこれをやったと確信していますが、今はできないようです。私は間違って何をしていますか?

    編集:this answer

  • +0

    +1優れたソリューションです。それは役に立ちます。 –

    答えて

    9

    にそれがこれを引き起こす可能性のあるものを言うのは難しいように私は、それがプロジェクトのプロパティでファイルバージョンを変更することで動作するようになりました。以前のバージョンを削除しないMSIをどのようにインストールしていますか?冗長なロギングでは動作しないインストールを実行することをお勧めします。私はこのようなコマンドラインから実行します:

    msiexec /i "project.msi" /l*v "c:\install.log" 
    

    /リットル、すべてをログに記録するよう指示します*、ログを作成する(インストーラサービスである)のmsiexecを伝え、vは冗長モードを使用するように指示します。

    これを実行して、ログファイルを調べると、何が失敗しているのか、その理由を教えてください。このログファイルもここに投稿することができ、一緒に何かを見つけることができると思います。

    追加の質問:ログファイルは、インストーラが何もしないと思うように見えます。あなたがファイルのバージョンを更新すると言ったら、何を更新していますか?どのようにファイルを配備するのですか?セットアッププロジェクトに「プライマリ出力」として含まれていますか、またはアセンブリを直接組み込んでいますか?依存関係を判断してそれを自動的に含めますか、またはプロジェクトの出力を含めましたか?

    UPDATE MSIを自動的にアップグレードするために何を変更する必要があるかについては、この記事を参照してください。 Question 511789

    +1

    ログでこれを見つけました: ファイル:C:\ Program Files(x86)\ Company \ Project \ Project.exe; \t上書きしません。 \tパッチは適用されません。 \t \t既存ファイルのバージョンが同じです ファイルが変更されたことを確認するにはどうすればよいですか? – stuartd

    +0

    今すぐファイルを見てください。元の質問を編集し、そこにログリンクを置くと、他の人が簡単に見つけることができます。 –

    +0

    助けてくれてありがとう、私は今それが働いていると思う。 あなたが参照している質問には、 「アップグレードコードは決して変更しないでください」と通知されました。 – stuartd

    1

    アプリケーションの実行中に更新しようとしていますか?もしそうなら、それは不可能です。小さな外​​部アプリを使用して現在の実行中のプロセスを強制終了し、アップデートをインストールして新しいバージョンを再起動するなど、より良い方法を考える必要があります。

    +0

    いいえ、アプリケーションは実行されていません。 – stuartd

    1

    ソリューションの再構築を試みることがあります。あなたはそれをしている間にそれを掃除することもできます。あなたが変更したものすべてがコンテンツファイルだった場合、どうなるか分かります。もしそうでなければ、無視する。

    5

    MFCプロジェクトでVERSION情報リソースをインクリメントしなかったため、アプリケーションの実行可能ファイルが更新されないことがあります。

    セットアッププロジェクトのバージョンを増やすだけでは不十分です。以下を参照してください:

    http://msdn.microsoft.com/en-us/library/6fkzft86.aspx

    "バージョン情報は、セットアップAPIで使用されています。"

    +0

    私はMFCプロジェクトを持っていますか?これはC# – stuartd

    5

    最後に、私の頭を数時間壁に打ちつけると、これが分かりました。

    私の問題はこの問題と同じで、解決するのが非常に簡単でした。上記の2つの答えは正しい方向に私を導き、私の問題を理解するのを助けましたが、ここでは一言で言います。

    RemovePreviousVersionがtrueに設定されている場合、問題はアセンブリ情報ボタンのアプリケーション設定の可能性が高いです。

    mohlsenは、上記の回答であったます。msiexec/i "のproject.msi" /のL * V "C:\ install.logに" として、私は、ログを走っ、と同じ応答になってしまいました上書きしません。パッチは適用されません。ファイルは、同じバージョン

    である既存の右方向に私を指摘もMFCを用いてビットを私を投げました。私はWindowsアプリケーションを書いており、最終的に2つと2つをまとめて、アプリケーションタブの下に書いているアプリケーションのプロパティに行きました。 Assembly Informationと呼ばれるボタンがあり、アセンブリのバージョンとファイルのバージョンが表示されます。私はこれらを増やして、今は私の.exeファイルの更新をしました。

    2つのことを行う必要があります。作成しているアプリケーションの実際のアセンブリバージョンとインストールパッケージのバージョンを増やす必要があります。

    +0

    アセンブリバージョンのインクリメントが助けになりました。 –

    5

    1つの追加ヒント:あなたはあなたのプロジェクトのAssemblyInfo.csファイルを開き、

    [アセンブリ:のAssemblyVersion( "1.0 *")]へのAssemblyVersionを変更した場合

    その後、アセンブリのバージョン情報がありますプロジェクトをビルドするたびに自動的に更新されます。次に、同じファイルからAssemblyFileVersionエントリをコメント化または削除します。そのため、ファイルのバージョンはアセンブリのバージョンと同じになります。つまり、ビルドするたびにファイルバージョンが自動的に更新されるため、インストーラのバージョンを更新して、期待どおりに上書きされるだけです。

    関連する問題