Quote:
Originally Posted by gatosky1620
Im creating my own Assassin creed 3 v1.06 conversion, but i have this problem when add the registry.iss file.

|
Possible Solution. Work for me...
insert this line in script
Code:
#define FileLine StringChange(FileLine, "'", "''")
in this code part...
Code:
#sub DeleteRegistryValue
#if Pos("Root:",FileLine) > 0 & Pos("SubKey:",FileLine) > 0 & Pos("ValueName:",FileLine) > 0
#define FileLine StringChange(FileLine, ": ", ":")
#define FileLine StringChange(FileLine, "; ", ";")
#define FileLine StringChange(FileLine, """", "")
#define FileLine StringChange(FileLine, "'", "''")
#define RootKey Copy(FileLine, Pos("Root:",FileLine) + 5, Len(FileLine))
This function contain error, and if insert a key and not value not remove from registry. In Registry.iss from Arsassin's Creed 3 the first eight lines not remove from windows registry on uninstall game (Firsts Lines: Assassin's Creed(R) III not contain value.. only root and key).
To fix error undelet keys from registry replace original "sub DeleteRegistryValue" for this part in script
Code:
#sub DeleteRegistryValue
#if Pos("Root:", FileLine) > 0 & Pos("SubKey:", FileLine) > 0
#define FileLine StringChange(FileLine, ": ", ":")
#define FileLine StringChange(FileLine, "; ", ";")
#define FileLine StringChange(FileLine, """", "")
#define FileLine StringChange(FileLine, "'", "''")
#define RootKey Copy(FileLine, Pos("Root:",FileLine) + 5, Len(FileLine))
#define RootKey Copy(RootKey, 0, Pos(";",RootKey)-1)
#define SubKeyName Copy(FileLine, Pos("SubKey:",FileLine) + 7, Len(FileLine))
#define SubKeyName Copy(SubKeyName, 0, Pos(";",SubKeyName)-1)
#if Pos("ValueName:", FileLine) > 0
#define ValueName Copy(FileLine, Pos("ValueName:",FileLine) + 10, Len(FileLine))
#define ValueName Copy(ValueName, 0, Pos(";",ValueName)-1)
#else
#define ValueName ""
#endif
if not (not IsWin64 and (Pos('64', '{#RootKey}') > 0)) then begin
RegDeleteValue({#RootKey}, '{#SubKeyName}', '{#ValueName}');
CurrentRegKey := '{#SubKeyName}' + '\' + '{#ValueName}';
repeat
CurrentRegKey := ExtractFilePath(CurrentRegKey);
SetLength(CurrentRegKey, Length(CurrentRegKey) - 1);
RegDeleteKeyIfEmpty({#RootKey},CurrentRegKey);
until RegKeyExists({#RootKey},CurrentRegKey);
end;
#endif
#endsub