2

インストールプロジェクト(InstallationProject)によって展開されるVS2008 Windowsアプリケーションプロジェクト(WinProject)があり、プロパティRemovePreviousVersionsがTrueに設定されています。

私のアプリでは、ユーザーが作成した構成ごとに、winappが構成をxmlファイル(C:\ Application Name \ Files \フォルダーに保存)に書き込みます。このファイルには、構成が保存されたパスも含まれています。

新しいバージョンのインストーラーをビルドすると、AlwaysCreateフラグがTrueに設定されているため、このフォルダーとファイルが上書きされます。

私の質問は、これらの古いファイルが上書きされないようにすると同時に、インストーラーから更新されたファイルを取得する方法です。

例:ファイルの内容

  <PriceFiles>
    <Name>arr</Name>
    <Path>C:\NewTool\arr.xml</Path>
    <UserDefined>true</UserDefined>
  </PriceFiles>
  <ReferenceProjects>
    <Name>studio</Name>
    <Path>C:\NewTool\ReferenceProjects\6cd3a9e9-ad65-475e-953b-128915a496cd.xml</Path>
    <UserDefined>true</UserDefined>
    <CreatedBy>Admin</CreatedBy>
  </ReferenceProjects>

前もって感謝します

4

4 に答える 4

0

はい、インストール前にアプリケーションを構成するために組み込みの構成設定を使用しない理由があります。

実際、私が実行する必要のある仕事は、あなたが推測したものの両方です...つまり、「ファイルがマシンに存在しない場合は、デフォルトのコンテンツで構成ファイルを作成します」「ファイルがすでにマシン上にある場合は、構成設定をマージします「」

この検証にカスタムインストーラーを使用する必要がありますか?

よろしくVatsa

于 2010-04-20T11:00:58.303 に答える
0

おそらく、構成ファイルを ApplicationData フォルダーに書き込む必要があります。それへのパスを取得できます:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
于 2010-04-19T06:26:49.803 に答える
0

組み込みのユーザー構成設定を使用しない理由はありますか?

これらのファイルが上書きされないようにするという点では、デフォルトの MSI 設定でそれを行う方法はないと思います。

既にマシンにある構成設定とインストールされている構成設定をマージして、マシンに存在しない設定で構成ファイルを更新しますか? それとも、これらのファイルが上書きされないようにして、アプリの他の部分をインストールしたいだけですか?

私が考えることができる最も簡単なオプションは、インストーラーに構成ファイルをまったく持たず、アプリケーションがそのケースを処理し、見つからない場合はそれらを作成することです。

それ以外の場合は、構成ファイルが存在しない場合に構成ファイルを変更またはインストールする、ある種のインストール後スクリプトを実行する必要があるでしょう。

注意すべきことは、私の MSI に関する知識は完全ではないため、特定のファイルを上書きしないようにする方法がある可能性があるということです。

于 2010-04-19T06:26:57.367 に答える
0

財産

通常、外部ファイルをアプリケーション フォルダに追加するときはいつでも、そのファイルをSetup and Deploymentクリックして、とproperitesというオプションを選択します。これは既存のファイル (インストール パス内) を上書きしません。Permanent: TrueExclude: False

また、永続的なものにしたい場合Myproduct.exe.configは、このファイルをアプリケーションフォルダーに追加して、Setup and Deployment前に述べたようにそれらのプロパティを調整できます。これにより、Myproduct.exe.config. 私はこれを試しました、私のために働きました。しかし、プロジェクトをビルドすると、以前は次のような警告が表示されましたTwo or more objects have the same target location ('[targetdir]\Myproduct.exe.config').

于 2013-04-10T14:48:50.827 に答える