【发布时间】:2020-04-15 13:29:43
【问题描述】:
我知道关于这个主题有很多类似的问题,但没有一个能给我答案。
我正在为我在 VS2019 中开发的 dll 创建一个 Windows 安装程序。安装程序已创建并在我的机器上正常工作,但在其他机器上却不行。原因是所有名为“CodeBase”的注册表值都有错误的 dll 路径。不是我的VS项目的安装目录而是release目录。
我试过了
"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\3.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),而是我的VS项目的release目录。 p>
我还尝试将 INSTALLFOLDER 替换为 TARGETDIR 并添加参数 -directoryid TARGETDIR(分别为 INSTALLDIR)在 heat.exe 的调用中,但没有任何改变。
所以我希望我能在这里找到能告诉我,我做错了什么的人。我会很感激任何帮助。如果您需要更多信息,请告诉我。我在 Win10 上使用带有 VS2019 的 heat 版本 3.11.1.2318。
我为我的产品匿名化表示歉意,但它不是我的财产,目前我不允许发布它。
约尔格
【问题讨论】:
-
稍后可能会再看一遍,但可能检查Paraffin 和another one 上的链接。我不确定它是否已经被维护了。那里可能有什么东西。
标签: visual-studio wix registry installation codebase