2017-08-30 13 views
-4

私のWixセットアッププロジェクトからC:ドライブ、MyConfigフォルダに設定ファイルをインストールします。 ":"という文字が属性 "Name"に許可されていないため、C:\ inディレクトリを指定するのは苦労します。Wix - C: MyConfigフォルダにファイルを条件付きでインストールします。

また、ファイルを条件付きでインストールし、アンインストール時に削除されないようにしたいと思います。

答えて

0

いくつかの試行錯誤の末、私は答えを見つけました。私はちょうどそのような私のCドライブのディレクトリをオーバーライドするSetDirectory要素を追加する必要があります。

<PropertyRef Id="ENV_DEPLOY"/> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
     <Directory Id="CompanyName" Name="!(bind.property.Manufacturer)"> 
      <Directory Id="INSTALLFOLDER" Name="!(bind.property.ProductName)" /> 
     </Directory> 
    </Directory> 
    <Directory Id="CDrive" Name="CDrive"> 
     <Directory Id="ConfigDir" Name="MyConfig" /> 
    </Directory> 
</Directory> 

<SetDirectory Id="CDrive" Value="C:\" /> 

<ComponentGroup Id="EnvironmentSetup" Directory="ConfigDir" > 
    <Component Id="currentEnvironment_DEVELOPMENT" Guid="*" Permanent="yes" > 
     <Condition>ENV_DEPLOY="DEVELOPMENT"</Condition> 
     <File Id="ConfigFile_DEVELOPMENT" Source="DEVELOPMENT\currentEnvironment.config" /> 
    </Component> 
    <Component Id="currentEnvironment_PRODUCTION" Guid="*" Permanent="yes" > 
     <Condition>ENV_DEPLOY="PRODUCTION"</Condition> 
     <File Id="ConfigFile_PRODUCTION" Source="PRODUCTION\currentEnvironment.config" /> 
    </Component> 
</ComponentGroup> 
+0

私はもう一度言って、** C:\ Configはシステムフォルダ**です。これはWindowsインストーラの内部実装の詳細なので、自分の展開には決して使用しないでください。事実、勤勉なシステム管理者は、このフォルダが何であるかを認識しており、失敗したインストール後に古いロールバックファイルが残っているシステムでは時々「スタック」する可能性があることを知っています。それと一緒にザップ。さらに、Windows自体が警告なしにフォルダに対して予期しない動作を行う可能性があります。他の場所に展開するのはとても難しいですか? –

+0

ConfigをMyConfigに変更しました – panpawel

+0

リスニングに感謝しますが、そのフォルダを変更することができれば、[ProgramFilesFolder]にインストールすることもできます。インストール後にフォルダが読み込み専用か、そこにあるファイルを変更しますか? –

-1

あなたは答えがほしいと思っていますが、他の解決策のオプションを検討してください。このコンストラクトはWindowsインストーラのデザインと戦うため、私はあなたにそれが後退することを保証することができます。この戦いはそれに値するものではありません。すべてのWindowsインストーラは、そのような珍しい(および不要な)展開構成を許可しないように設計されています。代わりがなければならない。

なぜC:¥Configフォルダにアクセスしますか?我々は本当にあなたが達成したいことを理解するために知る必要があります。これは、Windowsインストーラエンジンの内部システムフォルダです。実行中のMSIインストールの場合は、一般にロールバックファイルが格納されます。 私はこのフォルダ内の何かを行う理由の一つをと考えることはできません。それはちょうど安全ではありません。

+0

C:\ Configは、アプリケーション内部で使用されるフォルダです。それに展開する方法が分かっている場合は、ソリューションを提供してください。 – panpawel

+0

これはどのような内部アプリケーションですか?彼らはどのような機能を果たしていますか?私たちは本当にこれを理解するために知る必要があります。 Windowsインストーラーは、このようなフォルダーへの展開に「積極的に抵抗する」ことができます。実際に行う方法については適切なアドバイスはできませんが、必要なものを実現するためのよりよい方法があるかどうか判断するのに役立ちます。私たちにいくつかの情報を与え、私たちが道を見つけることを確信しています。 –

+0

@SteinÅsmul彼はちょうど模範的なフォルダのための貧しい名前を選んだ。私は彼が少なくとも意図的にではなく、 "内部システムフォルダ"にアクセスしているとは思わない。彼は単にディレクトリ名を設定する方法を知りたかっただけでした。なぜなら、a:はname属性で許可されていなかったからです。彼の投稿されたソリューションは、SetDirectoryを使用して適切な方法ですか? – Pete

関連する問題