首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LocalServer32条目中的短文件名

LocalServer32条目中的短文件名
EN

Stack Overflow用户
提问于 2014-07-28 16:37:32
回答 2查看 304关注 0票数 0

我在一个安装程序项目中有一个组件(用一个旧的Installshield版本创建)。

在MSI中创建的类表条目是正确的。但是,当安装程序运行时,注册表中的条目(LocalServer32)是用一个短的8.3名创建的。

如何使注册表中的条目使用完整的32位长文件名生成?

其背后的问题是:

我的组件试图用文件名定位本地化的DLL。但是,当使用8.3文件名启动组件时,GetModuleFilenameis还以8.3格式返回了它的外国名。因此,当它只是将DEU附加到名称并将扩展名更改为DLL以定位本地化DLL时,有时会失败。我不能修改这个组件。(即CompenentName.exe试图找到CompenentNameDEU.dll)

当我手动注册组件(ComponentName.exe -register)时,条目是用完整的长文件名生成的,一切都很完美。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-31 15:07:58

解决问题的一种方法是使用GetLongPathName() API将路径转换为文件名的长版本。

无论参数是缩短的8.3路径还是已经很长的路径,这都应该有效。

票数 0
EN

Stack Overflow用户

发布于 2014-07-29 19:16:47

查看创建的其他注册表项。我怀疑您会发现类似于LocalServer32数据项(而不是键)的东西,其中包含明显的垃圾。如果是这样的话,所发生的情况就是8.3的名称不用于定位COM服务器。该“垃圾”包含ProductCode和组件guid的编码,这些编码与MSI一起用于定位目标文件,必要时调用修复。

因此,如果这是您所看到的,那么简单的回答是“不要使用Class表”,因为它创建了一个MSI链接来查找目标,而不是文件路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24999942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档