我正在使用Inno Setup脚本在64位安装中安装我的32位和64位DLL。我可以从注册表设置中获取64位路径,但缺少32位路径不存在。但是,我知道路径的“尾巴”是不变的,只是头部需要修改。即,Inno Setup StringChangeEx失败
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(x86)'换出'C:\ Program Files'。我已经验证(使用MsgBox的){pf}和{pf32}常量是我认为他们是。外壳是一样的,没有前/后空格。似乎在某些系统上,该功能不起作用。
我正在使用最新版本的InnoSetup(10/2010)。该网站没有提到这个功能的任何问题。有没有其他人看到过这个和/或对它有什么想法?
如果解决了您的问题,请接受此答案。 – Bernard 2011-01-25 19:21:59