PDA

View Full Version : Problem with Registry in ciu 2035 or above


gatosky1620
30-05-2017, 18:21
Im creating my own Assassin creed 3 v1.06 conversion, but i have this problem when add the registry.iss file.

http://i.imgur.com/zkKLJt2.png

KaktoR
30-05-2017, 22:22
Yes, same error i have run into weeks above.

I don't have any solution for that.

I have compared with AC Rogue registry.iss and the only difference is the game name.

So it has something to do with the name of the game - strange.

http://fileforums.com/showpost.php?p=457784&postcount=1258

mikey26
30-05-2017, 22:39
Hi Mate
pull the reg keys and layout from this script i gave them to revo a long time ago.
And those where working fine.

http://fileforums.com/showthread.php?t=93761

peterf1999
30-05-2017, 23:12
[Registry]
Root: HKLM; SubKey: SOFTWARE\Ubisoft\{code:GetAppName}\1.01; Flags: uninsdeletekeyifempty

[CustomMessages]
en.AppName=Assassin%1s Creed(R) III

[Code]
function GetAppName(Param: string): string;
begin
Result:=FmtMessage(ExpandConstant('{cm:AppName}'),[chr(39)]) ;
end;

Cheers ;)

KaktoR
31-05-2017, 00:48
Have not tested yet, but this should work?

#define AC3Registry

...

#ifdef AC3Registry
function GetAppName(Param: string): string;
begin
Result:=FmtMessage(ExpandConstant('{cm:AppName}'),[chr(39)]) ;
end;

#else

function GetAppName(Default:String):String;
begin
if not (GetIniString('Messages', 'ApplicationName', '', ExpandConstant('{tmp}\' + ActLang + '.txt')) = '') and (GetValStr('InstallOptions', 'ApplicationName' + ActLangShort, '') = '') then
Result := GetIniString('Messages', 'ApplicationName', '', ExpandConstant('{tmp}\' + ActLang + '.txt'))
else
Result:=GetValStr('InstallOptions', 'ApplicationName' + ActLangShort, GetOrigAppName(''))
end;

#endif

Will test it further on weekend. But i am sure i have forgot something important.

And a question: Can i use #ifdef for this on [CustomMessages] too? If yes, it is neccessary at all?

Edit: Ok, it seems to work. I have just switched #define to ON. But as i said, will test it with registry.iss on weekend.

Edit 2: Here is the full code i am using for the fast test
#define AC3Registry

[CustomMessages]
#ifdef AC3Registry
eng.AppName=Assassin%1s Creed(R) III
#endif

#ifdef AC3Registry
function GetAppName(Param: string): string;
begin
Result:=FmtMessage(ExpandConstant('{cm:AppName}'),[chr(39)]) ;
end;

#else

function GetAppName(Default:String):String;
begin
if not (GetIniString('Messages', 'ApplicationName', '', ExpandConstant('{tmp}\' + ActLang + '.txt')) = '') and (GetValStr('InstallOptions', 'ApplicationName' + ActLangShort, '') = '') then
Result := GetIniString('Messages', 'ApplicationName', '', ExpandConstant('{tmp}\' + ActLang + '.txt'))
else
Result:=GetValStr('InstallOptions', 'ApplicationName' + ActLangShort, GetOrigAppName(''))
end;
#endif

gatosky1620
31-05-2017, 19:16
but the exactly problem is that i want use the 2040 version, so anyone have a language changer only for AC3 1.06

KaktoR
01-06-2017, 00:49
It's not possible without the source code.

gatosky1620
01-06-2017, 16:39
It's not possible without the source code.

so how somebody knows how create a bat file to add the reg entries with the folder location, the system language, and the windows architecture without edit first the bat file?

Cesar82
02-06-2017, 19:33
Im creating my own Assassin creed 3 v1.06 conversion, but i have this problem when add the registry.iss file.

http://i.imgur.com/zkKLJt2.png

Possible Solution. Work for me...

insert this line in script
#define FileLine StringChange(FileLine, "'", "''")

in this code part...
#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
#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

mikey26
03-06-2017, 07:53
If some knows how Yener/Bamse encrypted the 2040 script i am happy to help make the changes for those who have the 2040 beta 5 script.but i will not release the actually script.
but it need to be encrypted like the last release by Bamse.

KaktoR
03-06-2017, 08:25
Didn't BAMsE gave you the source compiler?

mikey26
03-06-2017, 14:13
no he did not mate i just have the 2.0.4.0 beta5 iss file so i could add different compressions.i am not good with inno.so if someone can help make compiler and it must not be able to be unpacked with inno unpacker.

KaktoR
04-06-2017, 05:04
I would say ask altef_4, i guess it's his source code (compiler) anyway.

And he is the only person around here i know of knowing such things about protection.