2009-03-13 40 views
2

現在、ビルドでは、展開プロジェクトファイル(VS2008)のバージョン番号が自動的に更新され、ProductCodeとPackageCodeが変更されます。各ビルドの.vdprojファイルでProductCodeを変更する必要がありますか?

私たちは多くのMSI機能をまったく使用しません。パッケージングの方法と、MSI内のコンテンツとして出荷される定義ファイルに応じていくつかのアクティビティを実行するカスタムアクションを実行する方法です。

MSIの機能の点では、すべてのビルドが同じように見えますが、デプロイメントプロジェクト内の変更ではなく、他のプロジェクトの出力の新しいバージョンを取得するだけなので、構造を変更しませんMSIの

私はProductCodeを安定したままにしても安全ですか?

理由は私がこれをやりたいのは、私がちょうど私たちのビルドが常に変更されていることを考えるとばかげた方法であることがわかるまで、私は製品コード経由でアンインストールしていたからです!

また、変更されていない値であるUpgradeCodeを使用してアンインストールする方法はありますか?

FEEDBACK:

私はこの1つにもう少し掘って私たちはかなりのテスト不動産に展開し、当社の展開システムでアンインストールを行う方法を変更しました。 ProductCodeをMSIから抽出してMSI/Xコマンドで使用するのではなく、MSIからUpgradeCodeを抽出します。私が提供し、遠隔地(PSEXECを経由して)実行し、アンインストール

set oWI = CreateObject("WindowsInstaller.Installer") 
set related - oWI.RelatedProducts(wscript.arguments(0)) 
if related.Count == 1 then 
    uninstallString = "msiexec /X " & related.Item(0) & " /qn" 
    set oShell = CreateObject("WScript.Shell") 
    oShell.Run uninstallString, 1, True 
end if 

OKで関連製品を見つけた小さなVBSスクリプト、おそらく世界最高のVBSの一環として - しかし、それは最初としてのUpgradeCodeを渡すことで動作しますパラメータをスクリプトに追加します。ロギングのための行がいくつかありますので、監査証跡に何が起きたのかを知ることができます。

ビットが長くなって、psexecから直接msiexecを呼び出すだけですが、msiファイルと設定ファイルを既に配信していたので、少しスクリプトを送信することは実際問題ではありません。

これは誰かを助けるかもしれない - 誰が知っている。

答えて

1

Visual Studioで.vdprojを開く場合は、ソリューションエクスプローラーペインでプロジェクトを選択し、プロパティペインで「RemovePreviousVersions」という名前のプロパティーを見つけます。このプロパティがtrueに設定されている場合、アップグレードコードが同じで以前のバージョンのインストール済み製品は、新しいバージョンがインストールされると自動的にアンインストールされます。

+1

最初に完全アンインストールを実行したのは、VS2008の動作が変更されたためです。これは、元のmsiのアンインストールアクションが新しいmsiのインストールアクションの前に呼び出されないためです。私たちのサービス創造のカスタムアクションは、今度は落ちますが、今はちょっと掘り下げました。 –

関連する問題