WIX 属性 NETFRAMEWORK40FULLINSTALLROOTDIR 为空

WIX property NETFRAMEWORK40FULLINSTALLROOTDIR is blank

我正在尝试使用 WIX 安装程序的 RegAsm 命令注册我的 COM 加载项。但是我做不到。它与 WixNetFxExtensionNETFRAMEWORK40FULLINSTALLROOTDIR 甚至 NETFRAMEWORK40CLIENTINSTALLROOTDIR 相比显示空白。

这是自定义操作的代码:

<CustomAction Id="RegisterUsingRegAsm" Directory="PROOFIX_ADDIN" Execute="deferred" Impersonate="no" Return="check"
              ExeCommand='"[NETFRAMEWORK40FULLINSTALLROOTDIR]regasm.exe" "[PROOFIX_ADDIN]Proofix.View.dll" /codebase' />

当我尝试对路径进行硬编码时 C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe。效果很好...

这是序列信息:

<InstallExecuteSequence>
  <Custom Action="RegisterUsingRegAsm" Before="InstallFinalize" />
</InstallExecuteSequence>

这是为安装程序生成的日志:

Action: RegisterUsingRegAsm, location: C:\Users\naveed.butt\AppData\Local\Optimentor\Proofix\, command: "regasm.exe" "C:\Users\naveed.butt\AppData\Local\Optimentor\Proofix\Proofix.View.dll" /codebase

首先你少了一个PropertyRef

像这样:

<PropertyRef Id="NETFRAMEWORK40CLIENTINSTALLROOTDIR"/>

第二个问题,如果你使用的是 64 位 windows,你应该使用 64 位变量:

NETFRAMEWORK40CLIENTINSTALLROOTDIR64

但是您可以处理 32/64 位 Windows OS 条件。你可以从这个答案中得到启发: