Вы можете использовать метод printf
, например:
System.out.printf("%.2f", val);
Короче говоря, синтаксис %.2f
говорит Java о возврате вашей переменной (val
) с 2 десятичными знаками (.2
) в десятичном представлении числа с плавающей запятой (f
) с начала спецификатора формата (%
).
Существуют другие символы преобразования, которые вы может использовать кроме f
:
d
: десятичное целое o
: восьмеричное целое e
: с плавающей запятой в научной нотации Ниже мое решение, в основном выполните xxxxx-runtime.exe в разделе [code], прежде чем получить путь от reg. Ниже приведен исходный код:
[Files]
Source: ".\xxxxx-runtime.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
[UninstallRun]
Filename: {code:GetUninstallString}; BeforeInstall: SetUninstallString; RunOnceId: {code:GetUninstallString}
[Code]
var
uninstallString: String;
function getUninstallString(p: String): String;
begin
Result := uninstallString;
end;
// execute xxxxx-runtime.exe
procedure exe();
var
iResultCode: Integer;
begin
Exec(ExpandConstant('{tmp}\xxxxx-runtime.exe'), '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode);
end;
procedure SetUninstallString();
var
sUnInstPath: String;
sUnInstallString: String;
begin
exe();
sUnInstPath := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxxxx_is1');
sUnInstallString := '';
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, sUnInstPath, 'UninstallString', sUnInstallString) then
RegQueryStringValue(HKEY_CURRENT_USER, sUnInstPath, 'UninstallString', sUnInstallString);
uninstallString := RemoveQuotes(sUnInstallString);
end;
Как вы поняли, константа {code:}
оценивается во время установки.
Поэтому вместо этого полностью реализуйте свой код в секции [Code]
, не используя секцию [UninstallRun]
.
[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall { or usUninstall } then
begin
{ Use RegQueryStringValue and Exec here }
end;
end;
Хотя вам нужно исправить свой код, который разрешает команду для деинсталлятора. Обратите внимание, что во всех существующих вопросах по этой теме UninstallString
разделяется на программный путь и аргументы. Если программный путь завернут в двойные кавычки, это нужно удалить.