【发布时间】:2011-01-25 15:48:13
【问题描述】:
我正在使用 Inno Setup 脚本在 64 位安装中安装我的 32 位和 64 位 DLL。我可以从注册表设置中获取 64 位路径,但缺少的 32 位路径不存在。但是,我知道路径的“尾巴”是不变的,只是需要修改头部。即,
64-bit (from registry) = c:\Program Files\My Application\Bin
32-bit (derived) = c:\Program Files (x86)\My Application\Bin
所以我所做的就是将 64 位程序文件路径换成 32 位程序文件路径。我用 StringChangeEx 很容易做到这一点:
RegQueryStringValue(HKLM, 'SOFTWARE\My Application', 'RootDir', sPath)
if IsWin64() then
StringChangeEx(sPath, ExpandConstant('{pf}'), ExpandConstant('{pf32}'), False);
sPath 与我的 32 位路径一起返回。这在大多数系统上都很好用,但有时 StringChangeEx 似乎不会将 'C:\Program Files' 换成 'C:\Program Files (x86)'。我已经验证(使用 MsgBox){pf} 和 {pf32} 常量是我认为的。大小写相同,并且没有前导/尾随空格。似乎在某些系统上,该功能不起作用。
我正在使用最新版本的 InnoSetup (10/2010)。该网站没有提及此功能的任何问题。有没有其他人看到过这个和/或对它可能是什么有任何想法?
【问题讨论】:
标签: inno-setup