我需要从windows目录中的ini文件中提取DefaultDirName信息选项,我该怎么做?
我在[code]节中使用以下代码从INI文件中获取字符串(在示例:[InstallSettings]节中,变量名:DefDirName):
在[Setup]部分脚本的最顶端:
DefaultDirName={code:GetDefDirName}
你也可以
[Setup]
DefaultDirName={ini:Filename,Section,Key|DefaultValue}
[Setup]
我在脚本中的InitializeSetup函数中执行了许多检查。这些操作大约需要10秒钟才能完成,在此期间,除了任务栏上的窗口按钮外,不会显示任何内容(单击它不会产生任何结果)。我想显示一个简单的“请稍候”窗口。如何执行此操作?以下是示例脚本,演示如何创建自定义对话框
基本上创建一个自定义表单并将自定义控件放置在其上。您可以将此作为起点,使对话框按您的意愿显示
[设置]
AppName='Test Date Script'
AppVerName='Test Date Script'
Defaul
我想问这些参数的默认值是什么:
客户宽度
阴蒂
我认为它接近497x360。它根据字体大小/DPI和使用的语言而有所不同,但默认值是相同的。
有关具体详细信息,请参阅有关dialog sclaing的MSDN文章
我只想将安装内容安装到一个特定目录,因此我希望禁用目录选择页面上的Next按钮,除非用户选择正确的文件夹进行安装
如何禁用目录选择页面上的Next按钮,并在用户选择特定目录后立即启用它?以下示例显示如何在到达SelectDir页面时禁用Next按钮,并仅在您输入(或从浏览目录对话框中选择)时启用它C:\MySecretDir文件夹(MySecretDir常量)。比较不区分大小写,因为用户可以输入他(或她)想要的任何内容
或者,如果仅当所选目录中有特定文件MyUniqueFile.exe时才想启用
调试浏览器插件时,我注意到资源的位置在Windows 64位注册表项中被缩写。当手动编辑注册表项以使用资源的长格式路径时,插件开始被识别
DLL安装到CommonFiles64,注册表项通过使用InnoSetup自动注册DLL添加到WOW64
我的问题:如何防止regsvr32缩写到资源的路径
例如:我需要防止someNicePlugin.dll缩写为someNic~.dllRegSvr32不写注册表值;它只加载DLL并调用DLL导出的函数。正是这些函数编写了这些值。因此,这些函数需要更改。我需
我有一个Inno安装程序,它执行一些耗时的“后安装”操作。执行此操作时,安装GUI完全冻结(似乎未处理其主事件循环)。这并不是一个令人愉快的最终用户体验,所以也许这个操作不冻结GUI是可能的?例如,在单独的线程中执行它,或者定期调用类似于handleGuiEventLoop()?的函数,这些函数用于提供有关长时间运行的操作的反馈
但是,为了使其有效,您必须能够通过定期调用此页面上的方法来更新Inno当前的进度
有一个图书馆可以让你,这可能是有用的。您可能还想看看从同一个站点使用ITDownloa
我正在使用Inno安装程序安装和更新我的python应用程序
更新时,安装程序不会从以前的安装中删除py文件,这会产生两个问题:
我正在使用插件:如果我在新版本中删除了插件,它仍然存在,供执行更新的用户使用
卸载更新的安装时,不会删除旧安装中的文件。(无法复制…)
如何在升级之前强制Inno安装程序卸载我的应用程序
这是我的剧本:
[Setup]
AppName=Foo
AppVersion=0.1
PrivilegesRequired=lowest
AppId=FooID
RestartI
我们在交互式安装的[Run]部分显示自定义表单。但自定义表单隐藏在安装页面下面。是在类似于消息框的安装程序上显示自定义表单的任何方式
使用下面的代码创建自定义表单。并在[运行]部分调用它
[Setup]
AppId=Display Form
AppName=Display Form
DefaultDirname={sd}\Test
DisableDirPage=yes
WindowVisible=no
OutputDir=C:\Test
[Run]
Filename: C:\Test.exe;
我们正在使用带Pascal脚本的Inno安装程序。根据系统的不同,将显示一个“是-否”消息框。如何检测/suppressMsgBox开关以不显示messagebox?使用内置的suppressItemBox函数() 值得回答的是,没有内置函数或属性可以告诉您安装程序是使用/suppressMsgBox命令行开关运行的。您必须检查命令行。
在这个创建自定义的支持页面上,他们建议通过将页面的值分配给变量来存储这些值。不过,目前还不清楚这项任务应该在什么时候进行
据我所知,如果您在创建页面时将其分配为正确的,您将获得默认值。这很有意义,因为在创建页面时,用户还没有输入任何“输入查询”
因此,当单击“下一步”按钮时,我使用函数NextButtonClick(CurPageID:Integer):Boolean将页面中的值分配给变量
为此,我需要在NextButtonClick函数中访问页面的变量(page.Values[0])。由于Pa
我有一个文件夹(数据库文件夹),我想在卸载后保留(用于保存用户数据和将来重新安装),我已将顶部文件夹以及其所有文件(和文件夹?)标记为永不卸载。无论是否为空,Inno Setup都会在卸载过程中删除这些空子文件夹(我想保留)。我必须声明我要保留的所有子文件夹,还是缺少它们的标志
[Dirs]
Name: "{app}\db\data"; Flags: uninsneveruninstall; Permissions: everyone-full
[Files]
Source: "D:\sesa
我有一个程序,应该只安装在64位架构上。所以我补充说:
ArchitecturesAllowed = x64
在我的Inno安装文件中,以防止出现这种情况
问题是显示的信息有点太“暴力”。它在标题中显示“错误”和一个大的红十字
我发现我可以更改此消息的内容(仅在这些架构上使用更改此消息),但无法在不影响其他错误消息的情况下修改图标和标题
我看不出哪一步可以匹配
有没有办法把它做成一个信息框?没有通用的方法来修改任何标准的Inno设置消息框
通常,您必须自己重新实现该功能。并非总是可能的
对于
我正在尝试编写我的软件,以便需要管理员权限。因为它必须创建文件并能够删除它们。我需要让inno在inno安装ISS文件中以管理员可以使用的方式执行我的程序
PrivilegesRequired=admin
注意这必须在[设置]部分进行。欢迎来到堆栈溢出!您可以先学习并创建一个示例。这使我们更容易帮助你。这个问题是重复的。所以不要发布重复的答案。
我需要检查一些端口是否可用?如何在Inno设置中实现这一点?
有没有办法在Inno设置中使用socket?这里有图书馆吗?如果有,如何导入和使用
谢谢您的回答。您可以使用我的功能检查端口是否可用:
函数CheckPortOccessed(端口:字符串):布尔值;
变量
结果代码:整数;
开始
Exec(ExpandConstant({cmd}'),'/C netstat-na | findstr'+'/C:“:'+Port+'”,'',0,
EWWAIT未过滤,结果代码);
如果结果代码为1,则
我有一条工作路线:
ShellExec('',ExpandConstant('{app}\iush.exe'),'/ui "C:\Program Files (x86)\Myapp"', ' ', SW_HIDE, ewWaitUntilTerminated, errorCode)
但是我想用它的常量替换程序文件(x86)目录:“C:\Program Files(x86)\Myapp”>{pf32}\Myapp
然后它想:
ShellExec('',ExpandConstant('{app}\
在我的安装场景中,在安装过程结束时,每个客户端都从服务器下载应用程序密钥。该文件由约64个随机字节组成,二进制,非编码。它应该存储在安装目录的配置文件中
该设置由Inno setup处理,它在CurStepChanged事件期间调用密钥生成过程。创建OLEWinHttp.WinHttpRequest.5.1,发送包含客户端数据的POST请求,并接收二进制响应。使用WinHttpReq.ResponseText提取响应,并使用SaveStringToFile存储到文件中
但是,生成的文件与从服务器
如何让InnoSetup跳过许可协议页面以及询问用户是否希望在已有安装的情况下创建桌面快捷方式的页面?我确实希望在初始安装时显示这些
当应用程序已经安装,我想最低限度的按钮需要安装更新。无需让用户再次接受许可协议,或指定是否需要添加桌面快捷方式。我推出定期更新,希望它尽可能不引人注目。以下是我的工作内容-这跳过了许可证页面和任务页面:
[Code]
function IsUpgrade: Boolean;
var
Value: string;
UninstallKey: stri
我在创建安装程序方面是新手。我需要创建一个包含3个文本框的表单:
领域
用户名
用户密码
然后将它们保存到注册表中。我已经知道如何将数据保存到注册表。Inno有一个灵活的对话框/页面引擎,允许您在向导流中创建自定义页面。有关如何执行此操作的示例,请参阅Inno安装附带的。[code]
变量
lblDomain:TLabel;
Lbluername:TLabel;
lblPassword:TLabel;
txtDomain:TEdit;
txtUserName:TEdit;
txtUserPass
我需要编辑或替换Inno Setup的关于设置对话框文本中的文本
这是一张照片:
在互联网上查找,我得到了以下代码:
[文件]
来源:CallbackCtrl.dll;标志:dontcopy
[守则]
类型
TWFProc=函数(h:hWnd;Msg,wParam,lParam:Longint):Longint;
函数CallWindowProc(lpPrevWndFunc:Longint;hWnd:hWnd;Msg:UINT;wParam:Longint;lParam:Longint):Lo
调用StringChangeEx函数时遇到问题,该函数正在替换文件路径的一部分,例如
此:C:\ProgramFiles(x86)\Steam\SteamApps\common\Stapper调用Pripyat\bin
收件人:C:\ProgramFiles(x86)\Steam\SteamApps\common\Stapper调用Pripyat\u mm2\bin
作为一种在替换文件之前备份文件的方法,同时保持其原始文件结构
#定义名称“痛苦模式”
#定义说明“安装程序”
#定义版本“2.0
用户在安装我们的应用程序时间歇性地遇到拒绝访问错误。有没有办法让InnoSetup找出占用文件的进程的名称,类似于Sysinternalshandle命令,并在错误消息中显示?这样的事情可以只使用安装脚本来完成,还是需要修改Innosetup源代码
如果不修改Inno源,就无法修改上面的错误消息以包含此类附加信息
在Vista之前的PC上安装时,需要在开始安装之前执行正在使用的文件检查。(我自己没有使用过此产品。)
欢迎您作为正式功能请求对此错误消息提出增强建议,或者最好自己编写支持代码并在Gi
我想在运行时在Inno脚本的代码部分创建一个Canvas对象。
以下是代码摘录:
[CODE]
var
Mask : TCanvas;
procedure CreateMask
begin
Mask:=Tcanvas.create
if Assigned(Mask.Font) then
Mask.Font.Color:=50
else
MsgBox('Font is nil', mbInformation, MB_OK);
end;
.
.
结果是窗口显示
我有几个带有共享文件的inno设置。使用“Sharedfile”标志,a可以确保只有在不再使用时才能卸载它们
但是,这不适用于快捷方式或图标,因为它们在指向这些文件的inno中被调用。即使未卸载目标文件,快捷方式也始终会被删除
我有什么遗漏吗?快捷方式的标志
或者,对于如何在代码中防止这种情况,您有什么出发点吗
非常感谢非常感谢TLama这似乎奏效了:
我禁止使用“uninsneveruninstall”标志卸载我的碎片图标。
然后在pascal中,检查文件是否仍然存在,如果不手动删除快捷方式或
我需要我的安装程序在安装过程中检查txt文件的第一行,并将其与我想要的任何数字进行比较
这是txt文件:
这是我试图编辑的代码:
function GetKeyValue(const AKeyName, AFileName, ADefault: string): string;
var
I: Integer;
KeyPos: Integer;
KeyFull: string;
FileLines: TArrayOfString;
begin
Result := ADef
我正在写一个Inno安装脚本,我需要在远程机器上添加一个注册表项。我无法使用Inno设置实现这一点
我尝试了以下代码,但不起作用
Exec('cmd.exe', 'reg add \\REMOTEPC\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v test /t REG_SZ /d C:\Support\Test.exe /f', '',SW_SHOW, ewWaitUntilTerminated, ResultCode);
我的Inno安装脚本中有以下[图标]部分:
[Icons]
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\IA_Desktop.exe"; WorkingDir: {app}
Name: "{group}\{#MyAppName}"; Filename: "{app}\IA_Desktop.exe"; WorkingDir: {app}
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}
我想为我的安装程序提供两种执行不同操作的不同安装类型:如果选择了“ApplicationServer”类型,则只执行部分代码。如果改为选择了客户端类型,则仅执行此部分过程
我试图在一个名为
[Types]
Name: "application"; Description: "{cm:ApplicationServer}"
Name: "client"; Description: "{cm:Client}"
[CustomMessages]
ApplicationServer=Applicati
我有以下Inno安装脚本,并且在SaveStringToFile行中出现此错误:
类型不匹配
有人能看出我的错误吗
谢谢大家!
var
错误代码:整数;
开始
ShellExec('open','taskkill.exe','/f/im procterm.exe','',SW_HIDE,ewwaitunterminated,ErrorCode);
SaveStringToFile('c:\program data\myapp\innolog.txt','procterm的错误代码为:'+错误代码
我从中获得了一个代码,我想将结果添加到列表框中。在询问之前,我已经尝试过这样做,但我无法添加所有项目。这是一个我的代码:
变量
查询,所有打印机:字符串;
WbemLocator、WbemServices、WBEMObject集:变量;
打印机:变体;
I:整数;
开始
WbemLocator:=CreateOleObject'WbemScripting.SWbemLocator';
WbemServices:=WbemLocator.ConnectServer'.'和'root\CIMV2';
是否有人知道如何添加出站防火墙规则或如何在innosetup脚本中指定方向。我可以添加入站规则而不指定方向,但不能添加出站规则
应该是这样的,
FirewallObject := CreateOleObject('HNetCfg.FwAuthorizedApplication');
FirewallObject.ProcessImageFileName := FileName;
FirewallObject.Name := AppName;
FirewallObject.Scope := NET
关于何时执行if语句?类似的基本构造在Pascal脚本中的行为与在Pascal脚本中的行为相同
说:
if和then关键字之间的表达式必须具有布尔值结果类型。如果表达式的计算结果为True,则执行then关键字后面的语句
如果表达式的计算结果为False,则执行else关键字后面的语句(如果存在)
表达式x'表示:(字符串)变量x为空字符串
因此,总体而言,代码是这样的:如果x不是空字符串,则将结果设置为真,否则将结果设置为假。注意,用于设置使用它的函数的返回值
实际上,代码可以简化为一条
我的主应用程序有一个Inno安装程序。功能也可以与另一个Inno安装程序一起单独安装,但我希望它将其文件复制到主应用程序的安装文件夹中。为此,将两个安装程序的{app}设置为完全相同的硬编码值
我的问题是,由于{app}目录上的拒绝访问错误,第二个安装程序将失败,或者它将完全删除{app}目录的内容
有没有办法让两个安装程序共享同一个{app}文件夹?请注意,该功能必须是一个单独的安装程序,以便它显示在控制面板中,出于设计原因,我需要它们共享相同的{app}文件夹。如果该功能可以在主应用程序之前
我正在尝试在inno安装文件中安装运行部分的两个可执行文件。我的文件部分如下所示
[Run]
#if GNTCChecked == "True"
Filename: "{tmp}\Utilities\SDK\setup.exe"; Description: "Install Foo"; Flags: nowait postinstall shellexec
Filename: "{tmp}\Utilities\SDK\foobar.exe"; Description: "Instal
我有3种语言,我需要根据我选择的语言更改AppName。
我写道:
[设置]
AppName={code:GetMyAppName}
[守则]
函数GetMyAppName(参数:String):String;
开始
案例语言
“en”:结果:=“AB Office客户端”;
‘ru’:结果:=‘БццццАБццС’;
“ua”:结果:=“БПієАББфіС”;
结束;
结束;
这里有我的语言相关的[消息]部分:
[Messages]
en.WelcomeLabel1=Welcome to
我刚刚注意到Inno Setup 6.0.4现在已经推出,它有一个新功能
目前,我正在使用此脚本查看是否安装了4.6.2:
{确定是否安装了.NET 4.6.2(或更高版本)}
函数IsDotNetDetected():布尔值;
变量
strKey64:字符串;
strKey86:字符串;
主席:红衣主教;
开始
strKey64:=“SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full”;
strKey86:=“SOFTW
我一直在网上寻找inno setuo代码或示例的工具栏选项,但我找不到任何我想在用户安装我的应用程序时安装的工具栏选项
有人举过这样的例子吗
只需选择他们是否要安装,并在主页/搜索中再选择两个复选框,就很简单了
然后安装它
谢谢 Inno有几种方法可以满足你的要求。最简单的方法之一是使用[Components]和/或[Tasks]部分。这两个都在帮助文件中有很好的文档记录
基本用法是
[Components]
Name: "ToolBar"; Description: "Install Tool
标签: Inno Setup
inno-download-plugininno-tools-downloader
我正在使用Inno安装程序分发我的应用程序。
是否可以签入Inno脚本以了解特定情况,并在需要时从internet下载和安装一些文件。是的,有一个名为的库,其中包含的示例基本上可以做到这一点。使用普通的Inno代码,它们可以根据您想要的任何内容进行调节。由Mitrich软件提供
这是一个InnoSetup脚本和DLL,允许您在安装过程中下载文件
它支持FTP、HTTP和HTTPS
它有点像InnoTools Downloader的替代品。只需要很少的改动
它提供了良好的下载显示和HTTPS和镜
我正在编写一个脚本,要求用户选择安装应用程序的哪些部分:
仅限应用程序、仅限数据库引擎、仅限数据或以上任意组合
我知道我应该使用[Components]部分来定义它们,但我对类型、组件和任务之间的相互作用感到困惑——首先,我认为[Tasks]是用于“额外”安装的,但后来我看到了明确链接这三者的代码
有谁能给我一个很好的解释,说明它们是如何协同工作的我肯定有一个
谢谢组件由一种或多种类型组成。在脚本中,您将根据最终用户选择的类型使用组件作为选择器。可以在任务中使用组件,因为根据用户选择的类型,任务
我删除了scalex/y值,但设置仍然缩放图像和文本。
是否可以禁用指定安装程序的DPI缩放
我想用一些参数运行regedit.exe,但其中一个参数需要加引号,而另一个参数不需要。如果我试图编译以下内容,我会得到一个关于不匹配或错位引号的错误:
Filename: "regedit.exe"; Parameters: "/s" """{localappdata}\LEAP\OutlookRedemption\Outlook2013_C2R.reg"""
Filename: "regedit.exe"; Parameters: "/s ""{localappdata}\LEAP\Out
在运行我的安装程序的新版本时,我希望通过将文件添加到zip存档中来备份现有安装
目前,我可以通过将文件复制到备份目标来备份现有安装。我使用的方法的简化版本如下:
[Files]
;Copy the contents of Bin folder to Backup folder. Skip if files don’t exist.
Source: {app}\Bin\*; DestDir: {app}\Backup\; Flags: createallsubdirs external rec
如何在Inno设置中显示标签,并且只在图像上留下文本
这就是我想要的
我担心,即使创建自定义页面,您想要的内容也可能不可能或相当困难。请查看Inno安装程序中包含的函数和示例脚本。类似的内容可能会起到作用。由于欢迎标签不支持透明度,您需要通过使用不同的类(具有透明度支持)创建自己的类来解决此问题,继承父类、字体、文本和大小,并隐藏原始类。以下是如何执行此操作的脚本:
[Code]
procedure InheritBoundsRect(ASource, ATarget: TControl);
b
根据我的问题,这两种解决方案都显示了一个问题,即组件列表在与它进行进一步的用户交互之前不会正确刷新。i、 e.当将组件的状态从“活动”更改为“禁用”,反之亦然,在拖动滚动条之前,文本不会自动变暗或取消变暗。有人能提供一种方法,让它在不需要拖动滚动条的情况下正确刷新吗
下面是一个可编译的示例脚本,其中只有九个组件条目显示了相同的行为。复选框的状态会正确更新,但文本的状态不会正确更新。滚动或单击项目似乎是使状态(暗显或未暗显)刷新的唯一方法
#define MyAppName "My Program
因此,正如标题所说,我想创建一个用户输入查询页面(这很容易),但我希望字段拒绝空格字符,并将输入限制在不超过15个字符(对我来说有点困难)。但是我需要将输入写入一个文件,我也不知道该怎么做
下面是我的代码现在的样子:
var
页面:TInputQueryWizardPage;
过程初始化Wizard();
开始
页面:=CreateInputQueryPage(wpSelectTasks,“选择配置文件名”,“此名称将用作您的配置文件名”,“请指定一个名称用作您的配置文件名(确保其唯一),然后单
我使用tstartmenuufoldertreeview创建的“开始”菜单文件夹浏览器窗体将获得空白树视图
我没有调用TStartMenuFolderTreeView.SetPaths
以下是Inno设置代码:
[代码]
变量
表格二:表格二;
GFLabel1:TLabel;
GFButton1,GFButton2:TButton;
gEdit:TEdit;
GroupTreeView:tstartmenuufoldertreeview;
程序按钮1点击(发送方:ToObject);
开始
表
我必须等待5-10秒,然后在PlazSales销售点软件的DBNetServices上单击“重试”。有没有办法让它自动等待至少一段时间
错误:
尝试替换现有文件时出错:
删除文件失败;代码5;访问被拒绝。单击“重试”以重试
再次
您可以实现用于删除文件的自定义逻辑,如:
[Files]
Source: {#AutoBackupNetwork}\DBNetService.exe; DestDir: {app}\server; \
Flags: IgnoreVersion overwrite
Inno Setup的内置许可证页面允许将RTF文件内容嵌入其中。是否可以将RTF内容加载到TNewMemo?我正在自定义页面中使用TNewMemo。不,您不能将RTF加载到TNewMemo,您必须使用TRichEditViewer
请参见否,您不能将RTF加载到TNewMemo,您必须使用TRichEditViewer
看
我正在为我的应用程序使用Inno安装程序生成安装程序
为了使用户能够选择完整安装或紧凑安装,我使用以下代码
[Types]
Name: "full"; Description: "Full Installation"
Name: "compact"; Description: "Lite Installation"
Name: "custom"; Description: "Custom Installation"; Flags: iscustom
[Components]
Name: "On
我使用Inno安装程序构建myapp(webapp)最终安装程序,还使用自定义Pascal代码设置先决条件并创建具有base_URL的配置文件
我将服务器名定义为“域”,端口定义为“主机端口”,安装过程中有一个对话框,允许用户放置域和主机端口
我想在安装完成后打开URL包含(http//domain:port)。此过程应在运行myapp后5秒内执行,以正常工作
Inno脚本按如下方式执行myapp:
[运行]
myapp.exe在安装完成后在后台启动,并执行其模块,大约需要3秒钟,因此如果在my
我想在安装[Icons]和[Run]部分时使用代码变量做出决定,但我不知道我是否错了
我的[code]部分是:
[代码]
变量
myW7Val:字符串;
函数GetMyW7Val(值:string):string;
开始
结果:=myW7Val;
结束;
函数IsWindowsVersionOrNewer(主、次:整数):布尔值;
变量
版本:TWindowsVersion;
开始
GetWindowsVersionEx(版本);
结果:=
(Version.Major>Major)或
((Ve
1 2 3 4 5 6 ...
下一页 最后一页 共 34 页