我已经读过并且理解了
this question
在这里是这样,但我有一个稍微不同的情况下,给定的解决方案似乎不能正常工作。以下操作方式不同:
-
WixNetFxExtension
以确定是否安装.NET 3.5作为启动条件。
-
我用的是
WixUtilExtension
如前所述为32位/64位构建配置内容
here
上面链接的SO问题中的一个注释建议使用以下命令让系统使用32位框架的事件消息文件:
<util:EventSource
Log="Application"
Name="*source name*"
EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"/>
<?if $(var.Platform) = x64 ?>
<util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR64]EventLogMessages.dll" />
<?else ?>
<util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" />
<?endif ?>
<?if ...
条件工作,相应地更改产品和文件夹名称。
在代码上方的一些行中,我使用以下代码来允许.NET Framework检测:
<PropertyRef Id="NETFRAMEWORK35"/>
<PropertyRef Id="NETFRAMEWORK20"/>
<Condition Message="...">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
当我运行安装程序时,一切似乎都正常,事件源也被创建,我也可以从我的应用程序中使用它,但是,我仍然得到没有找到事件消息文件的信息。检查注册表时发现缺少消息文件的路径:
EventMessageFile REG_EXPAND_SZ EventLogMessages.dll
我希望32位/64位框架的路径也会出现,但它似乎没有预先准备好。