Inno setup 如何将LoadStringFromFile函数从Inno Setup 5更改为Inno Setup 6并使其工作

Inno setup 如何将LoadStringFromFile函数从Inno Setup 5更改为Inno Setup 6并使其工作,inno-setup,pascalscript,inno-setup-v6,Inno Setup,Pascalscript,Inno Setup V6,我正在尝试将我的代码从Inno Setup 5转换为6。我无法使以下代码正常工作 我以前的工作代码是: 过程CurStepChanged(CurStep:TSetupStep); 变量 FileData:字符串; 开始 如果(CurStep=ssInstall),则 开始 LoadStringFromFile(ExpandConstant({code:GetSvcDir | 2}\PostSteps.ps1'),FileData); StringChange(FileData,'ScvProdP

我正在尝试将我的代码从Inno Setup 5转换为6。我无法使以下代码正常工作

我以前的工作代码是:

过程CurStepChanged(CurStep:TSetupStep);
变量
FileData:字符串;
开始
如果(CurStep=ssInstall),则
开始
LoadStringFromFile(ExpandConstant({code:GetSvcDir | 2}\PostSteps.ps1'),FileData);
StringChange(FileData,'ScvProdPath',ExpandConstant({code:GetSvcDir | 0}\);
StringChange(文件数据,'ProdSitePath',ExpandConstant('code:GetWebDir | 0}\');
StringChange(FileData,'ProdAuthPath',ExpandConstant({code:GetWebDir | 1}\);
StringChange(FileData,'444',ExpandConstant('code:GetConfig | 4}');
StringChange(FileData,'8732',ExpandConstant('code:GetConfig | 3}');
StringChange(文件数据'RV_ExceptionsPath',ExpandConstant('code:GetSvcDir | 2}\rveExceptions');
SaveStringToFile(ExpandConstant({code:GetSvcDir | 2}\PostSteps.ps1'),FileData,False);
结束;
结束;
在读了一些类似的文章后,我试图改变它,但我无法让它工作

过程CurStepChanged(CurStep:TSetupStep);
变量
FileData:AnsiString;
unicodester:字符串;
开始
如果(CurStep=ssInstall),则
开始
LoadStringFromFile(ExpandConstant({code:GetSvcDir | 2}\PostSteps.ps1'),FileData);
StringChangeEx(unicodest,'ScvProdPath',ExpandConstant({code:GetSvcDir | 0}\),True);
StringChangeEx(Unicodest,'ProdSitePath',ExpandConstant({code:GetWebDir | 0}\),True);
StringChangeEx(Unicodest,'ProdAuthPath',ExpandConstant({code:GetWebDir | 1}\),True);
StringChangeEx(unicodest,'444',ExpandConstant('code:GetConfig | 4}'),True);
StringChangeEx(unicodest,'8732',ExpandConstant('code:GetConfig | 3}'),True);
StringChangeEx(unicodest,'RV_exceptionPath',ExpandConstant('code:GetSvcDir | 2}\RVExceptions'),True);
SaveStringToFile(ExpandConstant({code:GetSvcDir | 2}\PostSteps.ps1'),FileData,False);
结束;
结束;

文件中的文本是英文,不是特别的。您能帮助我吗?

正如我对您之前的问题所做的评论,这不是关于从Inno Setup 5升级到Inno Setup 6的问题。Inno Setup 6与Inno Setup 5代码兼容。您的问题是您使用了Inno Setup 5的旧版Ansi。Inno Setup 6只有Unicode版本。即使使用Inno Setup 5,您也应该使用Unicode版本。 看

通常,您不应该使用
ansisting
。这是Ansi版本的遗产。使用
AnsiString
,如果用户在路径中使用非ASCII字符,代码将失败

所以最后,你的问题或多或少是重复的:


无论如何,要回答您的字面问题:您从未分配
UnicodeStr
变量

与前面的问题一样:不要使用
ExpandConstant
调用函数

过程CurStepChanged(CurStep:TSetupStep);
变量
FileData:AnsiString;
unicodester:字符串;
开始
如果(CurStep=ssInstall),则
开始
LoadStringFromFile(GetSvcDir('2')+'\PostSteps.ps1',FileData);
unicodest:=文件数据;
StringChangeEx(UnicodeStr,'ScvProdPath',GetSvcDir('0')+'\',True);
StringChangeEx(UnicodeStr,'ProdSitePath',GetWebDir('0')+'\',True);
StringChangeEx(UnicodeStr,'ProdAuthPath',GetWebDir('1')+'\',True);
StringChangeEx(UnicodeStr,'444',GetConfig('4'),True);
StringChangeEx(UnicodeStr,'8732',GetConfig('3'),True);
StringChangeEx(UnicodeStr,'RV_ExceptionsPath',GetSvcDir('2')+'\rveExceptions',True);
FileData:=unicodest;
SaveStringToFile(GetSvcDir('2')+'\PostSteps.ps1',FileData,False);
结束;
结束;
(未经测试)

您甚至可能不需要这些函数——您可以将它们内联到上述代码中,除非您在其他地方使用它们


你也会发现这很有用。

我意识到我并不真正理解你问题的要点。您的原始代码应该在Inno Setup Unicode/6中编译和工作(与Ansi/5中的ASCII限制相同)。你想实现什么?永远是你!非常感谢你,马丁。你真的很棒。