Inno Setup:在编译时从注册表中读取源路径

时间:2015-10-26 14:36:43

标签: registry inno-setup

[Code]部分读取注册表值非常简单。 但是,如果我必须读取要在[Files]部分中使用的注册表(安装路径)的值,以便从源文件夹中复制文件,那么安装/目标文件夹

我试过了:

Source: "{reg:HKLM\SOFTWARE\MyApp,InstallDir|DefaultDirName}\*"; DestDir: "{app}\Mydestination"; AfterInstall: AfterInstallProc

收到错误

  

“未知文件名前缀'reg:'”。

或者是否有可能在开头读取注册表值并将其存储(常量?和变量?)以便在[Files]部分中使用?

1 个答案:

答案 0 :(得分:0)

作为documentation says,只有在使用external标志时才能使用常量:

  

只有在指定external标志时才能使用常量,因为编译器不会自行转换任何常量。

这是因为常量是在运行时解析的,而(非外部)文件是在编译时编译到安装程序中的。

如果你想阅读目标机器上的注册表,你实际上还是想要使用external标志。

如果您想阅读本地注册表,请使用pre-processor function ReadReg

Source: "{#ReadReg(HKEY_LOCAL_MACHINE, "SOFTWARE\MyApp", "InstallDir", "DefaultDirName")}\*"; \
    DestDir: "{app}\Mydestination"; AfterInstall: AfterInstallProc

虽然我个人更喜欢在编译器的命令行上设置一个值:

Source: "{#InstallDir}\*"; DestDir: "{app}\Mydestination"; AfterInstall: AfterInstallProc

设为:

ISCC.exe Example1.iss /DInstallDir=c:\path