是否可以使用本节中的 Inno Setup 刷新桌面[Code]?
通过使用SendMessage或以某种方式使用SHChangeNotify?
我有一个需要执行安装程序的任务,他将检查分区类型(例如 FAT32、NTFS),如果分区不支持大于 4GB 的文件,则不允许安装。
老实说,我不知道如何才能做到这一点。你是否知道如何去做?也许是一些执行分区类型验证的代码?
如果您有任何想法来执行此任务,我将不胜感激。
我有以下 JSON:
{
"Info": {
"User": 2,
"String": "foo"
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,TLama 的 Inno JSON 配置库不适用于 JSON 字符串,而只能用于 json 文件。
我尝试使用 JSON 字符串而不是 json 文件的路径,但没有用。
if JSONQueryInteger('{"Info":{"User":2,"String":"foo"}}', 'Info', 'User', 0, IntValue) then
MsgBox('User=' + IntToStr(IntValue), mbInformation, MB_OK);
Run Code Online (Sandbox Code Playgroud)
我知道我可以将我的 JSON 保存到一个文件然后解析它,但它看起来有点混乱。
如何在 Inno Setup 中解析 JSON 字符串?
我有一个安装脚本,允许用户指定他们想要安装我的应用程序的位置。它以[Code]块内的 Pascal 脚本的形式出现。
var
SelectUsersPage: TInputOptionWizardPage;
IsUpgrade : Boolean;
UpgradePage: TOutputMsgWizardPage;
procedure InitializeWizard();
var
AlreadyInstalledPath: String;
begin
{ Determine if it is an upgrade... }
{ Read from registry to know if this is a fresh install or an upgrade }
if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppId}_is1', 'Inno Setup: App Path', AlreadyInstalledPath) then
begin
{ So, this is an upgrade set target directory as installed before }
WizardForm.DirEdit.Text := AlreadyInstalledPath;
{ and skip SelectUsersPage }
IsUpgrade := True;
{ Create a …Run Code Online (Sandbox Code Playgroud) 有没有办法在 VCL 样式中使用语言选择器(Inno Setup)?如何?
我想制作一个有条件的文件复制/安装,这取决于{app}位置给定的 .cfg(文本)文件中的内容。该文件包含一个 URL,该 URL 如下所示:“update.website.eu”,或“update.website.com”,或“update.worldoftanks.kr”,但也可以是“update.worldoftanks.kr/” ”等等,有几种可能。所以我需要一种机制来检测 url 并让我为每个检测到的 url 安装不同的文件。
目前我有这样的例子,但我不是高级程序员(我或多或少知道一些基础知识),我需要一个很好的例子。
if (CurPageID = wpPreparing) then
begin
client_ver :=
LoadValueFromXML(ExpandConstant('{app}\file.cfg'),
'//info/patch_info_urls/item');
if client_ver = 'http://update.website.eu/' then
if MsgBox('Are you sure?', mbConfirmation, MB_OKCANCEL) = IDCANCEL then
Result:=False;
end;
Run Code Online (Sandbox Code Playgroud)
示例file.cfg:
<?xml version="1.0" encoding="UTF-8"?>
<info version="3.1">
<!-- ... -->
<patch_info_urls>
<item>http://update.website.eu/</item>
</patch_info_urls>
</info>
Run Code Online (Sandbox Code Playgroud)
无论如何,我想在[Files]部分中使用它,是否可以从那里触发它,调用程序或其他内容[Files]?
我做了几次尝试,但它在编译过程中总是给我一些不匹配错误。
附:忽略它MsgBox,这只是示例,我不会显示类似的内容。我只需要复制文件。
这就是我想要弄清楚的,在 Inno Setup 中,我希望安装程序能够获得
我想将这两个用作变量以将其保存在注册表中
我正在尝试在临时文件夹中创建一个没有随机名称的文件夹。
这是我尝试在临时文件夹中创建文件夹的方式。
if not DirExists(ExpandConstant('{%tmp}\Utilities\SDK')) then
CreateDir(ExpandConstant('{%tmp}\Utilities\SDK'));
Log('Temp\Utilities\SDK Folder Has Been Created.');
Run Code Online (Sandbox Code Playgroud)
我查看了这个线程,但%不幸的是,即使使用了,它仍然没有创建文件夹。
该脚本按预期编译并运行,但是该文件夹不会创建,即使它说它在日志文件中,
我知道日志文件会说,因为它也被告知,但是,如果无法创建文件夹,会不会崩溃?或者如果存在 if 语句则返回 false?