0

非常に簡単な質問です。私のアプリが次のようにインストールされるとします。

myApp
 +-- bin
 +-- lib

インストール後に「lib」の名前を「plugins」に変更したいのですが、どうすればよいですか?

役立つかもしれないMoveFiles Elementがありますが、その使用方法はわかりません。

編集:

ここでの問題は、私の場合、ソース ファイルが別のパスにインストールされる可能性があることです。このシナリオについては、こちらで説明しています。

私が理解できる唯一の方法は、2 つのコンポーネント グループを作成し、それらを条件付きでインストールすることです。ただし、heat同じサブディレクトリを 2 回収穫するために使用するとID の競合が発生するため、別のパス (たとえばlibanother-lib) を使用し、インストール後にパスの 1 つを元の名前に戻すことを考えているため、この質問が発生しました...

4

2 に答える 2

3

しないでください。事前にファイルを正しくインストールしてください。Windowsインストーラーが物事を追跡する方法は、あらゆる段階であなたと戦うでしょう。最初から正しいフォルダにファイルをインストールするだけです。おそらくあなたが望んでいた答えではありません。

于 2012-08-16T08:24:56.440 に答える
0

heat最後に、生成された wx を別のディレクトリ構造で拡張する C++ プログラムを作成しました。したがって、さまざまな状況でどのパスをインストールするかを決定できます。インストール中に名前を変更するのと同じように機能しました。

これが私のプログラムによってパッチされた wxs ファイルです。基本的に、別のディレクトリと別のサブディレクトリを作成し、条件要素によって後で参照できるようWEBIDRに別のコンポーネント グループを追加します。webGroup

同じことを手動で行うこともできますが、待機中のファイルが何千もあり、それらが頻繁に更新される場合は、プログラム (またはスクリプト) を使用する方がよいでしょう。

<Fragment>
    <DirectoryRef Id="INSTALLDIR">
        <Directory Id="dirA5528701EE26FFBF346CCE20EE8ACE99" Name="bin">
            <Component Id="cmpEBA9C2A32D81BA8646BD1A64DBB39DB1" Guid="{142C531A-C71C-4890-9318-0FC42026C8FC}">
                <File Id="filDB56E052EC783676CEF361C0C5AA71F3" KeyPath="yes" Source="$(var.runDir)\bin\boost_date_time-vc100-mt-1_47.dll" />
            </Component>
        </Directory>
        <Directory Id="dir3279BEF4E08D9A00D2F205F325F00A81" Name="modules">
            <Component Id="cmpDECCAE13F8937500E4AC367A8EAC95F4" Guid="{85CC0C94-1BFB-4062-BC4E-FBF143921301}">
                <File Id="filDD3B40D68D0437B18B1108FBA49ABC1B" KeyPath="yes" Source="$(var.runDir)\modules\HelloAPI.dll" />
            </Component>
        </Directory>
    </DirectoryRef>
    <DirectoryRef Id="WEBDIR">
        <Component Id="webcmpEBA9C2A32D81BA8646BD1A64DBB39DB1" Guid="{fec110c5-a1a0-4b07-8a35-50f1af84001a}">
            <File Id="webfilDB56E052EC783676CEF361C0C5AA71F3" KeyPath="yes" Source="$(var.runDir)\bin\boost_date_time-vc100-mt-1_47.dll" />
        </Component>
        <Directory Id="webdirpluginF4E08D9A00D2F205F325F00A81" Name="plugins">
            <Component Id="webcmpDECCAE13F8937500E4AC367A8EAC95F4" Guid="{3ef79a47-7681-4991-9726-02db38c22f6d}">
                <File Id="webfilDD3B40D68D0437B18B1108FBA49ABC1B" KeyPath="yes" Source="$(var.runDir)\modules\HelloAPI.dll" />
            </Component>
        </Directory>
    </DirectoryRef>
</Fragment>
<Fragment>
    <ComponentGroup Id="runGroup">
        <ComponentRef Id="cmpEBA9C2A32D81BA8646BD1A64DBB39DB1" />
        <ComponentRef Id="cmpDECCAE13F8937500E4AC367A8EAC95F4" />
    </ComponentGroup>
    <ComponentGroup Id="webGroup">
        <ComponentRef Id="webcmpEBA9C2A32D81BA8646BD1A64DBB39DB1" />
        <ComponentRef Id="webcmpDECCAE13F8937500E4AC367A8EAC95F4" />
    </ComponentGroup>
</Fragment>

于 2012-08-18T11:44:37.470 に答える