0

VS2012 で WIX Toolset 3.7 を使用して、WFC サービスのインストーラーを作成しようとしています。すべてのサービスの構造は同じです。

レストサービスの仕組み

service.svc単に特定のクラスにリンクしています

<%@ ServiceHost Language="C#" Debug="true"
    Service="LandwehrServices.Service.Vorlage.ServiceOption" 
    Factory="ServiceCreator.DigestAuthenticationHostFactory" %>

dllは正しくインストールされていますが、すべてのフォルダーには同じservice.svc(最初にインストールされたサービスの)ファイルが含まれています...

これは私のProduct.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="020f2a79-d085-4c05-b49d-a09300e8a144"
       Name="!(loc.ProductName)"
       Language="1031" 
       Version="1.0.0.0"
       Manufacturer="!(loc.CompanyName)" 
       UpgradeCode="a0bbe6c8-1658-43e4-9cf8-51d6bbdf84d2">

  <Package InstallerVersion="200" Compressed="yes"
         Languages="!(loc.LANG)"
         Manufacturer="!(loc.CompanyName)" Comments="!(loc.Comments)"
         Description="!(loc.Description)" Keywords="!(loc.Keywords)"/>

    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLLOCATION" Name="!(loc.ProductName)">
          <Directory Id="INSTALLLOCATION.Option" Name="Service.Option" />
          <Directory Id="INSTALLLOCATION.Personal" Name="Service.Personal" />
          <Directory Id="INSTALLLOCATION.Postbox" Name="Service.Postbox" />
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="ProductFeature" Title="!(loc.ProductName)" Level="1">
      <ComponentGroupRef Id="Option_Project" />
      <ComponentGroupRef Id="Personal_Project" />
      <ComponentGroupRef Id="Postbox_Project" />
    </Feature>
</Product>
</Wix>

そして、私のBeforeBuildエントリ.wixdproj

<Target Name="BeforeBuild">
<MSBuild Projects="%(ProjectReference.FullPath)"
         Targets="Package"
         Properties="Configuration=$(Configuration);Platform=AnyCPU"
         Condition="'%(ProjectReference.WebProject)'=='True'" />
<ItemGroup>
  <LinkerBindInputPaths Include="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\" />
</ItemGroup>
<HeatDirectory OutputFile="%(ProjectReference.Filename).wxs"
               Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\"
               DirectoryRefId="INSTALLLOCATION.%(ProjectReference.Filename)"
               ComponentGroupName="%(ProjectReference.Filename)_Project"
               AutogenerateGuids="true" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true"
               SuppressRootDirectory="true" ToolPath="$(WixToolPath)" Condition="'%(ProjectReference.WebProject)'=='True'" />
</Target>

何か案は?WIXを使うのは初めて...

4

2 に答える 2

0

私は現在、まったく同じ問題を抱えています。リンカー(ライト)のバインドパスが原因だと思います。パッケージ化された 2 つの出力フォルダーを取得し、それらを結合します。VS 出力のリンカー コマンド ラインを見ると、–b フラグを使用してバインド パスが指定されています。複数のパスがある場合は、名前付きパスを使用する必要があると思います。

http://wixtoolset.org/documentation/manual/v3/howtos/general/specifying_source_files.html

C:\Program Files (x86)\WiX Toolset v3.7\bin\Light.exe 
-out "D:\Projects\...\Setup.msi" 
-pdbout "D:\Projects\...\Setup.wixpdb" 
-b "D:\Projects\...\MyProject1\obj\Debug\Package\PackageTmp\\" 
-b "D:\Projects\...\MyProject2\obj\Debug\Package\PackageTmp\\" 
-cultures:en-us -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" 
-ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" 
-ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" 
-loc WebAppInstallDlg_en-us.wxl -contentsfile obj\Debug\Setup.wixproj.BindContentsFileListen-us.txt 
-outputsfile obj\Debug\Setup.wixproj.BindOutputsFileListen-us.txt 
-builtoutputsfile obj\Debug\Setup.wixproj.BindBuiltOutputsFileListen-us.txt 
-wixprojectfile "D:\Projects\...\Setup.wixproj" obj\Debug\MyProject1.wixobj obj\Debug\MyProject2.wixobj obj\Debug\SetupUI.wixobj obj\Debug\Setup.wixobj

解決策は、名前付きバインド パスを使用することだと思います。ただし、ビルド前のステップで名前付きバインド パスを指定する方法を見つけることができませんでした。私のビルド前の手順はあなたのものと同じであるため、以下のように LinkerBindInputPaths 部分を使用済みの名前に変更する方法を見つけようとしています。

<File Source="!(bindpath.foo)bar\baz.txt" />
<File Source="!(bindpath.bar)baz\foo.txt" />

light -b foo=C:\foo\ -b bar=C:\bar\ -b foo=D:\

アンディ。

于 2013-10-23T08:21:29.753 に答える