WIX 加热错误 'registryvalue' 'codebase' 值
WIX Heat wrong 'registryvalue' 'codebase' value
我知道关于这个主题有很多类似的问题,但是 none 可以给我一个答案。
我正在为我在 VS2019 中开发的 dll 创建一个 windows 安装程序。安装程序已创建并在我的机器上正常工作,但在其他机器上却不行。原因是所有名为 'CodeBase' 的注册表值都有错误的 dll 路径。不是安装目录而是我VS项目的发布目录
我试过了
"C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe" dir "$(TargetDir.TrimEnd('\'))" -suid -sfrag -srd -gg -g1 -cg EA<my project name>Assemblies -var var.$(ProjectName).TargetDir -wixvar -dr INSTALLFOLDER -out "$(ProjectDir)WIX$(TargetName).wxs"
其中 INSTALLFOLDER 定义在 'Product.wxs'
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="my product name" />
</Directory>
</Directory>
</Fragment>
生成的 XIX 文件中的 CodeBase 注册表值行都如下所示:
<RegistryValue Root="HKCR" Key="CLSID\{41D3DB26-8261-303B-ACAF-F4F823FE21BE}\InprocServer32.1.1.0" Name="CodeBase" Value="file:///C:/Dev/C#/<my VS project path>/bin/Release/Microsoft.AspNetCore.Http.Features.dll" Type="string" Action="write" />
可以看到,创建的路径不是目标目录(C:\Program Files (x86)\my product name)而是我的release目录VS 项目。
我还尝试用 TARGETDIR 替换 INSTALLFOLDER 并添加参数 -directoryid TARGETDIR ( resp. INSTALLDIR) 在 heat.exe 的调用中,但没有任何改变。
所以我希望我能在这里找到可以告诉我我做错了什么的人。我将不胜感激任何帮助。如果您需要更多信息,请告诉我。我在 Win10 上使用 VS2019 的 heat 版本 3.11.1.2318。
对于我的产品的匿名化,我深表歉意,但这不是我的 属性,现在我不能发布它。
约尔格
不得不这么说很难过,但对我来说,唯一的解决方案是改用另一种技术并使用 visual studio 安装程序项目模板(恕我直言。更容易处理)来创建我的安装程序。
我知道关于这个主题有很多类似的问题,但是 none 可以给我一个答案。
我正在为我在 VS2019 中开发的 dll 创建一个 windows 安装程序。安装程序已创建并在我的机器上正常工作,但在其他机器上却不行。原因是所有名为 'CodeBase' 的注册表值都有错误的 dll 路径。不是安装目录而是我VS项目的发布目录
我试过了
"C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe" dir "$(TargetDir.TrimEnd('\'))" -suid -sfrag -srd -gg -g1 -cg EA<my project name>Assemblies -var var.$(ProjectName).TargetDir -wixvar -dr INSTALLFOLDER -out "$(ProjectDir)WIX$(TargetName).wxs"
其中 INSTALLFOLDER 定义在 'Product.wxs'
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="my product name" />
</Directory>
</Directory>
</Fragment>
生成的 XIX 文件中的 CodeBase 注册表值行都如下所示:
<RegistryValue Root="HKCR" Key="CLSID\{41D3DB26-8261-303B-ACAF-F4F823FE21BE}\InprocServer32.1.1.0" Name="CodeBase" Value="file:///C:/Dev/C#/<my VS project path>/bin/Release/Microsoft.AspNetCore.Http.Features.dll" Type="string" Action="write" />
可以看到,创建的路径不是目标目录(C:\Program Files (x86)\my product name)而是我的release目录VS 项目。
我还尝试用 TARGETDIR 替换 INSTALLFOLDER 并添加参数 -directoryid TARGETDIR ( resp. INSTALLDIR) 在 heat.exe 的调用中,但没有任何改变。
所以我希望我能在这里找到可以告诉我我做错了什么的人。我将不胜感激任何帮助。如果您需要更多信息,请告诉我。我在 Win10 上使用 VS2019 的 heat 版本 3.11.1.2318。
对于我的产品的匿名化,我深表歉意,但这不是我的 属性,现在我不能发布它。
约尔格
不得不这么说很难过,但对我来说,唯一的解决方案是改用另一种技术并使用 visual studio 安装程序项目模板(恕我直言。更容易处理)来创建我的安装程序。