wix - MSI API 不支持长文件名 - 如何缩短文件名?
问题描述
我Wix
用来生成MSI
Wix 正在ComponentsGenerated.wxs
从项目参考动态生成文件。
项目中的 DLL 之一具有最长的名称,如下所示
<Component Id="D5CF013A7A8C3FB9D1BD48B1996555DA"
Guid="{CBDB1BC0-F4EE-4824-B937-D9F66278F89A}">
<File Id="8EDDC3C71F9C124B466555A59378747"
KeyPath="yes" Source="$(var.BasePath)\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll" />
</Component>
这里: var.BasePath = "C:\Work\Projects\WixProjects\InstallerProjects\Client"
因此,当我尝试构建 Wix 项目时,我收到了file not found 错误。
我已将我的项目移至 C 盘。现在:var.BasePath = "C:\Client\"
错误得到解决。但问题是,修复它的更好方法是什么?我不想将项目移动到 C 盘。wix
我相信必须有一种方法可以缩短文件的长度。如果是,我该怎么做?
解决方案
NTFS 策略:我从未尝试过,但在最新版本的 Windows 10(
Version 1607 and up apparently
-运行“winver.exe
”)中,您可以尝试新的 NT/组策略。政策是:Enable NTFS long paths
。本地驱动器:启用策略(下面的过程)并可能执行
reboot
. 然后记得使用local NTFS drives
- 我会说更喜欢系统驱动器。让我们知道结果?(只是快速评论?)。
仅构建时间:看到您需要这些路径来编译和构建而不是安装,这可能有效吗?不过你需要小心,否则你的包可能包含太长的路径来安装下游(可能无法编译,我不确定)。你需要非常好的质量保证——显然。Windows 7
老实说,我会回过头来
描述: “启用 NTFS 长路径将允许已显示的 win32 应用程序和 Windows Store 应用程序访问超出每个节点正常 260 字符限制的路径。”
启动条件:防止在不受支持的系统上安装(无论出于何种原因)的通用机制是MSI 的启动条件概念。
策略:gpedit.msc:设置组策略(NB! Only PRO version of Windows I think!
):
- 按Windows键并点按R,键入
gpedit.msc
并按Enter。 - 前往:。
Local Computer Policy
=>
Computer Configuration
=>
Administrative Templates
=>
System
=>
Filesystem
- 双击该
Enable NTFS long paths
选项。启用它。
免责声明!副作用未知。
简化标记:还有一件事。在主观意见中,我发现 WiX 标记对于许多事情来说有点过于复杂。WiX 的作者通过允许自动生成“样板属性”(如果这是一个术语)将工具包带向了一个有趣的方向。请参阅此答案以获取更多信息: WIX 中 guid 的语法?
这是一个示例simplified WiX markup
:
<!-- Sample guid below, do not copy paste -->
<Component Id="File.dll" Guid="{12345678-1234-1234-1234-123456789ABC}">
<File Id="File.dll" Name="File.dll" KeyPath="yes" Source="..\File.dll" />
</Component>
相对
<Component>
<File Source="..\File.dll" />
</Component>
链接:
推荐阅读
- javascript - 忽略某些对象值的 Javascript 排序,将它们准确地留在它们所在的位置
- flutter - 未定义命名参数海拔,
- reactjs - 从表单提交事件访问 typescript 中的 event.target.elements 属性
- c# - 如何在 C# 中打印 A 到 Z(字符串)
- javascript - 如何命名执行两个相反操作(例如归档和取消归档)的函数?
- entity-framework - 只是好奇:实体框架如何确定 m:n 关系中连接表的命名?
- python - 我作为用户,我应该输入什么来导致此代码中的非值错误或 zerodivision-error?#Python
- image - 如何使用 camera.dart 和 camera_screen.dart 通过相机捕获图像,然后将其移动到我的颤振应用程序中的占位符
- python - Odoo E8103:SQL 注入风险。如果可以,请使用参数
- sbt - 多项目构建 - 全局插件在构建中途重新编译并在“类路径中缺少符号'type sbt.io.IOSyntax'”时失败