2015-10-26 3 views
0

Чтение значения реестра из раздела [Code] довольно просто. Но если я должен прочитать значение реестра (пути установки), которые будут использоваться в разделе [Files] для того, чтобы скопировать файлы из исходной папки папки установки/назначенияInno Setup: читать исходный путь из реестра во время компиляции

Я пробовал:

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

появляется ошибка

"неизвестный префикс имени файла 'рег:'".

Или есть возможность прочитать значение реестра в начале и хранящий его (константа? И переменной?) Для того, чтобы использовать в разделе [Files]?

+0

Вы хотите решить реестр на целевой машине? Вы хотите скопировать файл с места на целевой машине в другое место? (= вы не устанавливаете файл) –

+0

нет на исходном компьютере, чтобы взять данные внутри другого пути, а затем один установщик – Luca

+0

Что такое * «один установщик» *? Вы имеете в виду путь вашего '.iss'? –

ответ

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