2013-09-24 80 views
2

我正在使用HEAT爲文件目錄自動生成WiX片段。 當 - 。wxs文件創建時,爲什麼它在組件中包含一些不必要的標籤? 喜歡如下如何在使用wix時避免不必要的標籤

場景1

<Component Id="cmpFF03591E2D2B9B2AA2AA444299A693DB" Directory="dir7307A6085BD4ABD9B8955C093FD541F5" Guid="*"> 
    <Class Id="{00AB5D3B-4FAB-35AB-8916-59EE0247EFF1}" Context="InprocServer32" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSourceElement" ThreadingModel="both" ForeignServer="mscoree.dll"> 
    <ProgId Id="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSourceElement" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSourceElement" /> 
    </Class> 
    <Class Id="{0ED3627E-5196-3A33-8EDC-7DC7DFCE3A97}" Context="InprocServer32" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ByteArrayTypeConverter" ThreadingModel="both" ForeignServer="mscoree.dll"> 
    <ProgId Id="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ByteArrayTypeConverter" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ByteArrayTypeConverter" /> 
    </Class> 
    <Class Id="{10FA9802-2D3A-3CE4-95BB-7170AA4AE251}" Context="InprocServer32" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.ConfigurationChangeEventSourceImpl" ThreadingModel="both" ForeignServer="mscoree.dll"> 
    <ProgId Id="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.ConfigurationChangeEventSourceImpl" Description="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.ConfigurationChangeEventSourceImpl" /> 
    </Class> 

...........大量的類文件

<File Id="fil7DC27EB4CA5B9970A7CBD422D919CCFF" KeyPath="yes" Source="$(var.SourcePath)\bin\Microsoft.Practices.EnterpriseLibrary.Common.dll" /> 
    <ProgId Id="Record" /> 
    <RegistryValue Root="HKCR" Key="CLSID\{00AB5D3B-4FAB-35AB-8916-59EE0247EFF1}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" /> 
    <RegistryValue Root="HKCR" Key="CLSID\{00AB5D3B-4FAB-35AB-8916-59EE0247EFF1}\InprocServer32\5.0.414.0" Name="Class" Value="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSourceElement" Type="string" Action="write" /> 
    <RegistryValue Root="HKCR" Key="CLSID\{00AB5D3B-4FAB-35AB-8916-59EE0247EFF1}\InprocServer32\5.0.414.0" Name="Assembly" Value="Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Type="string" Action="write" /> 
    <RegistryValue Root="HKCR" Key="CLSID\{00AB5D3B-4FAB-35AB-8916-59EE0247EFF1}\InprocServer32\5.0.414.0" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" /> 

..........大量的註冊表項

</Component> 
+0

有一個類似的後續方案2 <的組件ID = 「cmp8881C49A46B392150B03542DCE92B4F9」 目錄= 「dir7307A6085BD4ABD9B8955C093FD541F5」 的Guid = 「*」> <文件ID = 「filC4F1AC6BCC527A213767C3D4E4442B24」 的keyPath = 「是」 來源=「$(VAR另一種情形.SourcePath)\ bin \ Modules.Manage.Service.Deployment.dll「/> Programmer

回答

5

我會複製貼上我的問題(Wix\heat.exe strange output)的答案,因爲它對我有用。正如Yan Sklyarenko所說:

Supply heat.exe with -sreg and -scom command line switches. See heat.exe -? for more options 
+0

謝謝你回覆。我已經在vs中創建了wix安裝程序項目,並且我已經在.wixproj文件中加入了自動生成組件,如下所示...可以請求我在哪裏添加命令行 Programmer

+0

我不知道。我直接使用heat.exe。 – mynkow

1

類和註冊表意味着二進制文件是COM二進制文件。這是一個C#COM二進制文件,因爲我可以看到ForeignServer =「mscoree.dll」。

如果你不想要一個COM二進制文件,你可以在你的項目中指定assemlyinfo.cs,標記COMVisible = false。