Shkutu,
просто сохраняй имя инстансы в директории установки в текстовом файле, и когда надо считывай из него текст. В качестве защиты от дурака скрой его
вот накатал функции сохранения текста в файле и чтения оттуда. Они на чистом WinApi
читать дальше »
Код:

#define A = (Defined UNICODE) ? "W" : "A"
const
OPEN_ALWAYS = 4;
GENERIC_READ = $80000000;
GENERIC_WRITE = $40000000;
FILE_SHARE_READ = $00000001;
FILE_SHARE_WRITE = $00000002;
OPEN_EXISTING = 3;
TRUNCATE_EXISTING = 5;
INVALID_HANDLE_VALUE = -1;
OFS_MAXPATHNAME = 128;
type
Pointer = Longint;
POverlapped = Pointer;
PSecurityAttributes = Pointer;
function CreateFile(lpFileName: String; dwDesiredAccess, dwShareMode: DWORD; lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition,
dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; external 'CreateFile{#A}@Kernel32.dll stdcall';
function WriteFile(hFile: THandle; const Buffer: Pointer; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD;
lpOverlapped: POverlapped): BOOL; external 'WriteFile@Kernel32.dll stdcall';
function ReadFile(hFile: THandle; Buffer: Pointer; nNumberOfBytesToRead: DWORD;
var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; external 'ReadFile@Kernel32.dll stdcall';
function GetFileSize(hFile: THandle; lpFileSizeHigh: Pointer): DWORD; external 'GetFileSize@Kernel32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';
function GetTextFromFile(const FileName: String; out Text: String): Boolean;
var
dwBytesRead: DWORD;
FileSize: DWORD;
hFile: THandle;
begin
hFile := CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
Result := hFile <> INVALID_HANDLE_VALUE;
if Result then
try
FileSize := GetFileSize(hFile, 0);
SetLength(Text, FileSize);
Result := ReadFile(hFile, CastStringToInteger(Text), FileSize, dwBytesRead, 0);
finally
CloseHandle(hFile);
end;
end;
function SaveTextToFile(const FileName, Text: String): Boolean;
var
dwByteWritten: DWORD;
hFile: THandle;
begin
hFile := CreateFile(FileName, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_ALWAYS or TRUNCATE_EXISTING, 0, 0);
Result := hFile <> INVALID_HANDLE_VALUE;
if Result then
try
Result := WriteFile(hFile, CastStringToInteger(Text), Length(Text), dwByteWritten, 0);
finally
CloseHandle(hFile);
end;
end;
procedure InitializeWizard();
var
S: String;
begin
if SaveTextToFile('C:\file.txt', 'Shkutu') then
if GetTextFromFile('C:\file.txt', S) then
MsgBox(S, mbInformation, MB_OK);
end;
у меня нет доверия к встроенным
SaveString(s)ToFile
LoadString(s)FromFile
но если хочешь воспользуйся ими
или пиши своё собственное значение в реестр с именем инстансы только для самой себя, и читай её в деинсталяторе
Цитата Shkutu:
как можно добавить форму к деинсталлятору »
|
объясни лучше на словах как оно должно выглядеть. Может не форму а страницу типа той которую ты создаёшь у себя в коде?
А то я честно говоря не знаю что мне писать
El Sanchez, раз уж ты здесь можешь пожалуйста проверить правильность моих функций SaveTextToFile и GetTextFromFile. Как бы я с флагами не напутал, хотя всё работает, но фиг знает