2016-09-15 29 views
1

プロジェクトAssembly versionまたは<?define ProductVersion="1.0.0.0" ?>のバージョンを、WIX設定ファイルで作成することができます(ClickOnce公開ボタンなど)。 は、私はこのような何かしたい:新しいバージョンごとに新しいフォルダを作成する

MyProjectPublishes/ 
----MyProject1.0.0.0/ 
     MyProjectSetup.msi 
----MyProject2.0.0.0/ 
     MyProjectSetup.msi 
----MyProject3.0.0.0/ 
     MyProjectSetup.msi 

答えて

1

はい、しかし、あなたのMSIは、メジャーアップグレードされるべきでないことを心に留めておくか、それはあなたが望むものでない限り、彼らは(以前のバージョンを削除します。おそらくあなたはサイド・バイ・サイドを望みますフォルダを同時にインストールすることができます)。

最初に、コンポーネントGUIDをハードコードする必要はありません。同じコンポーネントのGUIDを別のフォルダに移動することがサポートされていますが、アップデートでは多くの問題が発生し、アンインストールは避けてください。また、メンテナンスするのも苦痛なので、コンポーネントには自動GUIDを使用してください。

はそうのようなディレクトリの作成を作成します(あなたはPRODUCTVERSION変数に渡すと仮定し):

<?define ProductName="MyProduct"?> 
<?ifndef ProductVersion?> 
    <?define ProductVersion=1.0.0?> 
<?endif?> 
<Product Name="$(var.ProductName)" Version="$(var.ProductVersion)" ...> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder" Name="Program Files"> 
     <Directory Id="INSTALLDIR" Name="$(var.ProductName)"> 
     <Directory Id="VersionDir" Name="$(var.ProductVersion)"/> 
     </Directory> 
    </Directory> 
    </Directory> 
</Product> 

これは、ディレクトリテーブルのちょうどサンプルスニペットです。私はINSTALLDIRをルート製品パスとして定義して、バージョンごとのディレクトリに入るすべてのバージョンを制御し、誤って別のコンポーネントのGUIDを使用して以前のバージョンを踏み外すことができないようにしました(アンインストール時にファイルが削除されるref-countingされていないため)。

はあなたが行うことができ、その後、インストールするには:

<Component Directory="VersionDir"> 
    <File Source="foo.dll"/> 
</Component> 

私はGUIDを指定していないに注意してください、またそのことについては、他のID。それらは生成され、GUIDは安定しています(つまり、同じバージョンを使用すると、バージョンを変更するまで、その後のすべての再構築で同じGUIDが使用されます)。

この使用例(および参照先のC#プロジェクト内のファイルからバージョンを取得する方法)については、https://github.com/heaths/psmsi/tree/develop/src/Setupを参照してください。

+0

まあ、私はインストールフォルダについて質問しませんでした。私は、バージョン番号 – Arti

+0

のフォルダにmsiを自動的に構築する方法について質問しました。「msiを自動的にフォルダに構築する」ということは何を意味していますか? MSI構築のポイントは、特定のフォルダに物事をインストールすることです。緩いファイルのソースフォルダのレイアウトについて話している場合は、同じ推奨事項が適用されます。 Name属性はデフォルトの宛先とソース名ですが、Sourceディレクトリを明示的に設定することもできます。 – Heath

+0

Visual Studioで '' 'Build'''ボタンをクリックすると、' '' .msi'''ファイルを新しいフォルダに入れたいのです(フォルダの名前はプログラムのアセンブリバージョンでなければなりません)。私の質問の構造を参照してください。そして、私はサーバー上のユーザー用にこのフォルダを公開したいので、必要なバージョンをダウンロードすることができます。 私の質問は、バージョンでの間違いを防ぐためにこれを自動的に行うことです。 – Arti

関連する問題