Вопрос Записать короткий путь к файлу

Tidro

Новичок
Для последующего использования или с какой то другой целью?
Можно в реестр или в текстовый файл рядом с инсталлом или же в .ini
TEXT
Чтение
FileOpen
FileRead
FileClose
Запись
SaveStringToFile
REG
RegWriteStringValue
RegQueryStringValue
INI
WriteIni
ReadIni
Если же интересует как прописать путь то для замены PROGRA~1 можно использовать {pf}
Подробнее
 
Последнее редактирование:

Krinkels

Он где то тут
Администратор
Ежели вдруг возникнет вопрос как получить такой "короткий" путь, то смотри в сторону API функции GetShortPathName
 

Krinkels

Он где то тут
Администратор
Могу только на С++, что то типа такого

Код:
wchar_t *GetShortFileName( wchar_t *FileNames )
{
   static wchar_t aTmp[ _MAX_PATH ] = {0};

   if ( GetShortPathName( FileNames, aTmp, sizeof( aTmp ) / sizeof( wchar_t ) ) )
     return ( wchar_t * )aTmp;
   else
     return ( wchar_t * )FileNames;
}
 

Хамик

Старожил
Snoopak96, как создать функцию для использования в секции [registry]? Типа такого:
Код:
[Setup]
AppName=My Programm
AppVersion=1.0
DefaultDirName={pf}\My Programm
OutputDir=.

[Registry]
Root: HKLM; Subkey: "Software\test"; ValueType: String; ValueData: "{code:GetExeShortPath},0"; Flags: uninsdeletekey
 

Snoopak96

Старожил
Хамик,
Код:
function ShortPath(String:String): String;
begin
Result := GetShortName(ExpandConstant('{pf}'))
end;

[Registry]
Root: HKLM; Subkey: "Software\test"; ValueType: String; ValueData: "{code:ShortPath},0"; Flags: uninsdeletekey
 

Хамик

Старожил
Snoopak96, а exe файл как? Так не укарачивает:
Код:
[Setup]
AppName=My Programm
AppVersion=1.0
DefaultDirName={pf}\My Programm
OutputDir=.

[Registry]
Root: HKLM; Subkey: "Software\test"; ValueType: String; ValueData: "{code:GetExeShortPath},0"; Flags: uninsdeletekey

[Code]
function GetExeShortPath(String:String): String;
begin
Result := GetShortName(ExpandConstant('{app}\MyProg.exe'));
end;
 

Snoopak96

Старожил
Хамик,
Ёшкин кот, давай разбирайся сам уже:
Код:
function GetExeShortPath(String:String): String;
begin
Result := GetShortName(ExtractFilePath(ExpandConstant('{app}\MyProg.exe'))) + ExtractFileName(ExpandConstant('{app}\MyProg.exe'));
end;
 

Хамик

Старожил
Snoopak96, разбирался, получилось такое:
Код:
function GetExeShortPath(const pt:string): string;
begin
   pt := GetShortName(AddBackslash( ExpandConstant( '{app}' )));
   Result := pt +'MyProg.exe';
end;
Вроде тоже работает. Спасибо!
 
Сверху