我正在使用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