omals
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добавлено: skeptik_vdm шото такое function InitializeSetup(): Boolean; var oldPath, oldFolder, MyProgramm4Run, WorkDir4myProgramm, MyParameters :String; er: boolean; res:Integer; begin er := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\STALKER.exe', '', oldPath); // если при инсталяции туда записано, или писать кудато еще, а тут читать оттуда if (er and (oldPath<>'')) then er:=FileExists(oldPath); if er then begin if MsgBox('Запустить С.Т.А.Л.К.Е.Р. - Чистое небо?', mbConfirmation, MB_YESNO) = IDYES then begin MyProgramm4Run:= oldPath; MyParameters:=''; er := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\STALKER.exe', 'Path', oldFolder); if (er and (oldFolder<>'')) then begin WorkDir4myProgramm:=oldFolder; end else Delete(oldPath,Length(oldPath)-Length('STALKER.exe')+1, Length('STALKER.exe')); // не уверен что Indx, Count для Delete задал на 100% верно WorkDir4myProgramm:=oldPath; end; Exec(MyProgramm4Run, MyParameters, WorkDir4myProgramm, SW_SHOW, ewNoWait, res); end; Abort; end; end; если же такого HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\STALKER.exe нет то создать свой, например [Registry] Root: HKCU; Subkey: "Software\STALKER\"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Flags: uninsdeletevalue; и тогда function InitializeSetup(): Boolean; var oldPath, MyProgramm4Run, WorkDir4myProgramm, MyParameters :String; er: boolean; res:Integer; begin er := RegQueryStringValue(HKCU, 'Software\STALKER', 'InstallPath', oldPath); MyProgramm4Run:=oldPath+'STALKER.exe'; WorkDir4myProgramm:=oldPath MyParameters:=''; if (er and (oldPath<>'')) then er:=FileExists(MyProgramm4Run); if er then begin if MsgBox('Запустить С.Т.А.Л.К.Е.Р. - Чистое небо?', mbConfirmation, MB_YESNO) = IDYES then begin Exec(MyProgramm4Run, MyParameters, WorkDir4myProgramm, SW_SHOW, ewNoWait, res); end; Abort; end; end; Добавлено: JuNoS Цитата: Как сделать чтоб папка установки читалать из реестра: DefaultDirName=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\program_is1\InstallLocation ? | уже подобное рассматривали http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=1920#5 но повторю [_Setup] DefaultDirName={code:MyDirName} [_Code] function MyDirName(S:String): String; var InsPath: String; er: boolean; myFile:String; begin Result:=ExpandConstant('{pf}\Моя компания\Мой продукт'); //если ключа нет то будем ставить сюда er := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\program_is1\', 'InstallLocation', InsPath); if er and (InsPath<>'') then //если ключ существует и там что-то записано begin Result := InsPath; end; end; | Всего записей: 110 | Зарегистр. 04-12-2006 | Отправлено: 18:00 29-12-2008 | Исправлено: omals, 18:10 29-12-2008 |
|