Я пытаюсь прочитать реестр Windows, чтобы обновления моего приложения могли восстановить ранее сохраненный путь установки в качестве его DefaultDirName.Inno Setup - определение пути по умолчанию внутри [code]
Я где-то читал, что я должен вызвать функцию, например:
DefaultDirName="{code:GetPath}"
Проблема заключается в том, что мне нужно, чтобы определить путь по умолчанию, в случае, если функция не находит предыдущую. Например, «C: \ MyPath». Поэтому я сделал это:
[Code]
function GetPath(Value: String): String;
var
OrigPath: string;
begin
Result := '{sd}\MyPath';
if RegQueryStringValue(HKCU, 'Software\MyApp', 'PathExec', OrigPath) then
Result := OrigPath;
end;
Это не работает. Когда я запускаю настройку, в диалоговом окне адресата назначения я получаю буквально «C: \ PathOfMySetup \ {sd} \ MyPath», а не «C: \ MyPath».
Что следует писать на этой первой строке «Результат: =», чтобы «MyPath» был создан на системном диске?
Спасибо.
Как может быть 'HKCU' ключ реестра для вашего приложения, если вы только установка приложения? –
Разве это не цель первого результата, как дефолт? Если RegQueryStringValue не сможет найти ключ, функция вернет мой C: \ MyPath, чтобы заполнить диалог dir, правильно? – mehrlich
Но «DefaultDirName» - это путь установки по умолчанию для новых установок. При повторной установке/обновлении значение не используется (по умолчанию). Таким образом, ваш код на самом деле не имеет смысла для меня. Вы получите такое же поведение с простым 'DefaultDirName = {sd} \ MyPath'. –