1

以下のステートメントを参照してください。とりあえず、MSIのセットアッププロジェクトにソースフォルダーと宛先フォルダー(このフォルダーはインストールプロセス中に形成されます)をハードコーディングしました。注:以下のファイルパスは、MSIパッケージのインストール先であり、ソースの場所ではありません。[INSTALLLOCATION] \App_Config\のようなハードコードされた値を非表示にして宛先またはソースのプロパティ値を設定する方法に関する質問

現在、コマンドラインからINSTALLLOCATION(E:\ Websites \ SCBUDirect \ Website \ SCBUDirect.B2CWeb)を渡しており、宛先フォルダーの値を[INSTALLLOCATION] \ App_Config \として設定したいのですが、プロパティ設定でどのように実装できるかわかりません。または、試したが機能しなかったカスタムアクション。

以下は、コピーする必要のあるファイルのコンポーネントのスニペット(heat.exeから)です。

<Component Id="cmp209B0DBB82F9FF15193D29F0BD337B7F" Directory="dirB0A921E55A598C65B18B4E47885629C3" Guid="{3B140259-FCC7-4D2E-8629-CBB879BBA46C}">
  <File Id="filBC5CC5B8DCC504F6DC75A7B2673E7D0D" KeyPath="yes" Source="C:\Workspaces\Chatra\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />
</Component>

これがproduct.wxsの私のコードの一部です

<Fragment>
    <Property Id="SourceFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />

    <Property Id="DestFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\" />


  <ComponentGroup Id="CopyFiles">
         <ComponentRef Id="CMP_LOG4TXT" />
    </ComponentGroup>

      <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52"  Directory="INSTALLLOCATION" KeyPath="yes">
        <CopyFile Id="Copy_LOG4TXT" 
              SourceProperty="SourceFilesFolder" 
              DestinationProperty="DestFilesFolder" 
              DestinationName="basic.log4net" />
      </Component>

</Fragment>
4

2 に答える 2

0

[INSTALLLOCATION]ファイルパスのパターン保存はここで行う必要があります。これにより、インストールおよびアンインストール中にファイルパスが保存されます。そうしないと、ネットワーク検索エラーが発生します。

<product>

    <Property Id="INSTALLLOCATION">
          <RegistrySearch Id="REMEMBERPROPERTY" Root="HKCU" Key="Websites\SCBUDirect" Name="Remembered" Type="raw"/> 
    </Property>

        <CustomAction Id="SAVEINSTALLDIR" Property="CMDREMEMBERPROPERTY" Value="[INSTALLLOCATION]"/>
        <CustomAction Id="SETINSTALLDIR" Property="INSTALLLOCATION" Value="[CMDREMEMBERPROPERTY]" />

        <InstallExecuteSequence>
          <Custom Action="SAVEINSTALLDIR" Before="AppSearch"></Custom>
         <Custom Action="SETINSTALLDIR" After="AppSearch">CMDREMEMBERPROPERTY</Custom>
        </InstallExecuteSequence>

        <SetProperty Id="DestFilesFolder" Value="[INSTALLLOCATION]\Website\App_Config" After="CostInitialize" />

</product>

<fragment>

  <ComponentGroup Id="CopyFiles">
         <ComponentRef Id="CMP_LOG4TXT" />
    </ComponentGroup>

      <Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52"  Directory="dir572C565E70B3AEE6F0C29D3EE9056E9B" KeyPath="yes">
        <CopyFile Id="Copy_LOG4TXT"         Source="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" DestinationProperty="DestFilesFolder" DestinationName="basic.log4net" />
      </Component>

</fragment>
于 2013-03-07T21:43:19.923 に答える
0

次のように相対パスを使用できます。

<Component Id="comp_Include_0" DiskId="1" KeyPath="yes" Guid="D026AE84-0F34-4715-810D-4EB6656DFECD">
    <File Id="file_Include_0" Source="..\Include\3rdParty\ac_types2.6\ac_complex.h" />
</Component>

「..\」
は、たとえば、次のように宣言されている bin\release フォルダーを意味します。

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
      <Directory Id="INSTALLFOLDER" Name="ATE" >
      </Directory>
    </Directory>
</Directory>

宣言する必要があります

<DirectoryRef Id="INSTALLFOLDER">

Wixインストーラーを作成する最も簡単な方法は、完全なディレクトリにパラフィンを使用することです

于 2013-02-28T23:14:34.383 に答える