我的安装程序在Inno设置中使用以下命令创建服务: Filename: {sys}\sc.exe; Check: IsAdminLoggedOn; Parameters: "create Example start= delayed-auto binPath= ""{app}\Example.exe"""; Flags: runhidden 此行在Windows XP以外的所有Windows都起作用,因为Windows XP中不支持delayed-auto启动类型. 我需要使用delayed-auto启动类型,原因有两个. 我的服务需要始终在背景上运行,而无需用户干预,这意味着该服务必须自动启动. 我的服务取决于其他基本的Windows服务,因此无法运行,因此,我仅在所有基本服务启动之后才使用delayed-auto开始. 因此,我可以在Windows XP上创建一个与delayed-auto相似的启动类型的服务,如果不是delayed-auto,则有什么选择?
以下是关于 inno-setup 的编程技术问答
我想通过命令提示符使用Inno Setup在图标部分中运行Windows start Service.pls帮助我解决此问题 解决方案 您不会通过[Icons]部分运行. 如果您要图标启动服务,请使用以下内容: [Icons] Name: {group}\Start Wibble service; Filename: net.exe; Parameters: "start wibbleservice"; 澄清问题后的更新,但在这里留在这里: 如果您要Inno开始服务,则要么使用[Run] Filename: net.exe; Parameters: "start wibbleservice"; Description: "Starting wibble service"
我需要在安装应用程序时安装和运行服务(使用Inno Setup创建installer.exe) 我使用了下面的代码 [Run] Filename:"{sys}\myservice.exe "; Parameters: "-install" 我不确定这是否正确 (我添加代码以提醒重新启动,但我想知道是否可以在安装后立即运行服务,而无需重新启动PC.) [Setup] AlwaysRestart=yes 欢迎任何评论. 解决方案 使用sc.exe,这很简单,唯一的缺点是您可能必须拦截和解析输出才能知道出了什么问题,如果这样做. 使用我的Inno设置服务库.这是SCM API上的Pascal脚本包装器,让您完全控制服务.使用更复杂,但允许进行完全错误检查和处理.有一些较高级别的功能旨在在标准抑制Inno设置对话框中显示错误. ps:不要在任何Windows Systems文件夹中安装您的服务.它们应被视为Windows私人文件夹.除非您有非常非常
我想使用Inno设置中的命令提示符在[Icons]部分中重新启动Windows Service.请帮助我解决问题. 解决方案 您可以使用sc start [service]启动服务,然后sc stop [service]停止它.使用某些服务net start [service]正在做同样的事情. 但是,如果您想在同一批次中使用它,请注意sc stop不会等待停止服务.在这种情况下,您必须使用net stop [service],然后使用net start [service].这将同步执行. 其他解决方案 您可以创建一个.bat-file,其中包含以下内容: net stop "my service name" net start "my service name" 其他解决方案 net.exe stop "servicename" && net.exe start "servicename"
我有一个.NET Windows服务.我想创建一个安装程序来安装Windows服务. 基本上,它必须执行以下操作: pack installutil.exe(是否需要?) 运行installutil.exe myService.exe 开始MyService 另外,我想提供一个运行以下命令的卸载器: installutil.exe /u MyService.exe 如何使用Inno设置进行这些操作? 解决方案 您不需要installutil.exe,也许您甚至没有重新分配的权利. 这是我在应用程序中这样做的方式: using System; using System.Collections.Generic; using System.Configuration.Install; using System.IO; using System.Linq; using System.Reflection; using System.Serv
我正在尝试通过以下安装脚本在Windows Server 2012(IIS版本8.5)中创建Iissetup,但引发错误"无效类字符串". 代码: var IIS, WebSite, WebServer, WebRoot, VDir: Variant; ErrorCode: Integer; begin { Create the main IIS COM Automation object } try IIS := CreateOleObject('IISNamespace'); except RaiseException( 'Please install Microsoft IIS first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)'); end; end; 解决方案 我在Windows Server 2008 R2 Enterprise
我有一个Innosetup安装程序,需要创建IIS虚拟目录.为了创建虚拟目录,必须启用IIS管理服务. 如何检查启用了哪些Windows功能?最好的解决方案是检查注册表设置,但是通过Innosetup可以使用的其他方法还可以. 该解决方案应与XP,Vista,Win7,Win2003 Server和Win2008服务器(32和64位)一起使用. 解决方案 我不知道副手如何一般判断安装了哪些功能. 在IIS的具体情况下,您可以通过查找此注册表的密码来分辨: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp 如果该密钥存在,则安装 IIS.如果键丢失,则没有安装IIS. 更多详细信息.
你好堆栈溢出社区, 我正在面临Inno设置脚本的问题,需要一些帮助.在安装可执行文件(EXE)期间,我需要为MongoDB设置一个环境变量.我的目标是为MongoDB创建Windows服务,但是在此之前,我需要为其添加一个环境变量.为了实现这一目标,我遵循了Inno设置脚本中的以下步骤: 在ssInstall的curstepchanged事件中,我正在使用envremoveaddpath函数添加mongoDB环境变量.环境变量似乎正确设置了. 在ssPostInstall的curstepchanged事件中,我使用刷新环境函数刷新了环境变量. 我继续执行必要的逻辑,包括为MongoDB创建Windows服务. 但是,当我尝试在服务配置期间使用命令mongod --dbpath 配置mongoDB时,我会遇到错误消息:'mongod' is not recognized as an internal or extern
我的应用程序当前将文件写入其安装目录,这意味着程序文件不是有效的选项(我知道这不是理想的).但是我也希望我的安装程序(Inno)不需要管理权权利,即没有UAC;我认为Google Chrome会这样做. 考虑到这两个限制,哪个常见位置默认是有意义的? 解决方案 如果您真的想制作不需要管理权限的每个用户安装程序,则要使用的正确设置为: [Setup] PrivilegesRequired=lowest DefaultDirName={userpf}\YourAppName 请注意,(解决Glytzhkof的关注点)这是本地文件夹,而不是漫游文件夹.如果您想进行设置漫游,那么您仍然需要您的应用程序将其(相当于语言的){userappdata}\YourAppName文件夹保持其中.无论如何,用户必须在他们打算在其上使用的每台计算机上单独安装该软件(但这通常是最佳选择). 制作每用户应用程序的某些缺点是: 安装时您不能使用管理权限.特别是这意味着您无法安装您
圣诞快乐,stackoverflowians! 我开始使用INNO设置分发.NET GAC定位程序,但是由于其各种缺点,我想转到下一个版本的MSI.不幸的是,对于我现有的用户来说,这似乎将是一个重大麻烦...当然,我必须坚持我的用户在安装新版本之前手动卸载上一个版本.但是似乎即使以前的版本完全卸载,它仍然有问题. 我不知道这是我发现的错误,还是Inno设置只是这种方式愚蠢,但是Inno似乎并没有完全删除组件.结果是,当我尝试运行MSI安装程序时,即使在卸载后,我也会在日志中看到以下内容: skipping installation of assembly component: {guid} since the assembly already exists 那我在这里做什么?有什么办法可以强迫MSI即使已经存在,也可以覆盖它们? 解决方案 使用相同的强名称(AssemblyVersion)构建您的DLL,但具有更高的文件版本(AssemblyFileVersio
我正在尝试使用Inno设置来分发由另一个应用程序用作插件的文件.如果找不到插件目的地,它仍应安装在程序文件目录中,为用户提供手动说明. 向 Tlama 提供类似问题中使用的一些代码: inno设置查找子文件夹. 关注脚本列出了我希望实现的基本设置,并在脚本不完整的情况下进行评论.我只是在我的头上. : - ) 如何将发现的目录传递回StampTargetDir(当前只是MSGBOX) 如何在指定目录名称(即'stamps')下搜索所有子目录 如何将所有子目录(#2)的搜索限制为生活在{pf}>>或{localappdata}中的几个名为子目录(即" Adobe"和" Acrobat") 在[Files]下进行文件插件安装,以找到"邮票"目录. P.S.我知道搜索有一些明显的缺点.但是,"邮票"目录不太可能在其他领域使用(请参见#3). [Files] ; Install all the files in a user specified
安装完成后,安装程序为用户提供了一个标有"视图"的复选框选项,该选项使用户可以选择在安装完成后显然打开安装文件夹.如何禁用此? 安装完成后,我不希望用户可以选择"查看"任何内容.只需关闭安装程序. 更新:这是脚本: ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My App" #define MyAppVersion "1.0" #define MyAppPublisher "Blah, LLC" #define MyAppURL "http://www.blah.com/" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do
我安装 msi 作为我的Inno设置安装脚本的一部分.有没有办法作为我程序的卸载过程的一部分卸载它? 解决方案 最简单的方法是学习该MSI软件包的GUID, http://msdn.microsoft.com/en-us/library/aa370568(V=VS.85).aspx 安装后,它将在'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall(或它的WOW64)下注册. 一旦知道GUID,可以通过调用 来卸载它 MsiExec.exe /X{A879B90E-B62C-4DA4-9C3F-79A1A6CFAAF9} 在这里{A879B90E-B62C-4DA4-9C3F-79A1A6CFAAF9}是" Microsoft Asp.net Web Pages-Visual Studio 2010工具"的示例. 其他解决方案 有很多变体要这样做.与批次: @echo off set
执行mariadb-10.2.11-winx64.msi文件后,安装MariadB 10.2.11服务器,我想对Mariadb 10.2.11 Server的 my.ini 文件进行一些更改.它已经安装了. 我尝试使用AfterInstall参数,如图所示: [Files] Source: C:\Setup\Bin\mariadb-10.2.11-winx64.msi; DestDir: {tmp}; \ Flags: ignoreversion promptifolder deleteafterinstall; Components: server [Run] Filename: {tmp}\mariadb-10.2.11-winx64.msi; Parameters: /qn; \ WorkingDir: {tmp}; Flags: shellexec waituntilterminated; AfterInstall: ConfigMyIni [C
我正在尝试在Inno设置上创建一个新窗口.在此窗口中: 应该有5个广播按钮 用户必须仅选择此选择之一 当用户单击下一个按钮时,我必须获取并保存广播按钮的值(在某个地方?),并将此值提供给批处理文件(将运行)使用参数 我认为我应该在NextButtonClick的功能上采取一些行动,但是我不知道如何达到无线电按钮的价值并保存. 任何帮助都将不胜感激. 该窗口的屏幕截图: 现在,我的代码如下: #define MyAppName "CDV Client" #define MyAppVersion "3.6.1 build 2" #define MyAppPublisher " CDV" #define MyAppURL "https://example-cm-1" #define MyAppExeName "example.exe" [Setup] AlwaysUsePersonalGrou
使用InnoSetup我准备了我的maininstaller.exe,它非常大,例如90Mb用户下载时,有时需要年龄. 因此,用户通常会忽略它,而我的设置由于不友好而不完整. 现在我已经比较了Google Chrome/Canary web browsers概念,它们的尺寸也很大,但是他们使用了两种类型的安装程序,一个非常小的小尺寸安装程序,它只是要快速下载并执行,下载第二个大型主安装程序,此方法对部署大型安装更为友好,并且主要被许多用户接受. 现在,如何使用Innosetup进行此类操作(例如Google Chrome web browser安装程序)?一个first_setup.exe大小很小,以便用户可以快速下载它,但是一旦执行它,它将访问互联网并下载我的maininstaller.exe并确保正确下载并执行它. 这可能吗?任何想法. 解决方案 是.您可以构建某种在线安装程序,例如仅下载用户在设置向导期间选择的组件.要下载组件文件或组件设置文件,您可
我使用CX-Freeze为Python应用程序创建MSI安装程序.让我们称其为" A".这取决于另一个应用程序" B".我希望我的安装程序为" A"包含并运行" B"的MSI安装程序.如何使用INNO设置或Wix Toolset创建引导/链式安装程序? 解决方案 这是一个基本的INNO设置脚本,将两个MSI安装捆成单个设置程序.由于安装程序仅存在安装MSI文件,因此不需要应用程序目录.为避免创建应用程序目录,请使用" CreateAppdir = no". (谢谢Tlama!) [Setup] AppName=My Bundle Installer AppVersion=0.1 DefaultDirName={pf}\MyCo\MyBundle DefaultGroupName=My Bundle Group Uninstallable=no CreateAppDir=no [Files] Source: "A.msi"; DestDir: "{tmp}" Source:
我遇到的一些安装程序可以选择安装应用程序"只是为我"或"使用此计算机的任何人". 如何获取我的Inno设置脚本以向用户提供此选择,以便我可以根据安装程序的回答更改安装程序的操作? 解决方案 有很多方法可以解释" Just Me"与"所有用户"问题的答案.我头顶只有几个方面: 最常见的方法似乎是简单地控制当前用户的配置文件或"所有用户"配置文件中的快捷方式(开始菜单,桌面,QuickLaunch)(我个人个人觉得很愚蠢 - 什么如果我想要多个用户(但不是全部)使用该应用程序?). 应用程序本身是安装到用户配置文件(Google Chrome-style)还是{programfiles}? 设置存储在当前用户的配置文件中或所有用户配置文件中?或者甚至直接在程序文件夹中(不要!)? 如果您想知道如何使用无线电按钮创建一个向导页面来控制此内容,请检查上的部分在Innosetup帮助文件中使用自定义向导页面.寻找 TInputOptionWizardPage
我想以静默模式调用多个.msi文件,如果有失败,请停止整个安装. 是否可以从[运行]部分调用msiexec.exe的返回代码? 当前我只能在Windows Event Viewer中看到错误消息. 解决方案 当前无法检查 [run] 条目的成功执行.该代码仅登录流程退出代码,然后继续使用下一个条目(可以在Inno设置源文件 main.pas.pas 中进行检查,该函数为 processRunentry(),从当前版本5.2.3中的第3404行开始. 如果您需要确保MSIEXEC的多次执行成功,则需要编码中间层.这可以像在[Run]条目中执行并使用正确参数启动MSIEXEC.EXE的小存根一样简单,等待进程完成,然后将返回代码写入文件. . 检查此类安装步骤成功的另一种方法是通过使用 AfterInstall 参数添加每个 [run] 条目的自定义过程调用.在这样的函数中,您可以例如检查OCX控件是否已成功安装: [Run] Filename: "{tm
过去,我有其他与Innosetup一起使用的代码签名.但是最近我购买了三年的EV代码签名,即USB令牌证书. 当我手动执行无innosetup时,它起作用. 我该如何使用innosetup? 我尝试关注但总是失败. [Setup] ... SignTool=signtool 编辑:对话窗口不断问按确定或取消,当我单击确定时,它会继续重复. 解决方案 您没有为signtool.exe指定正确的位置.当您手动运行它时,它在c:\Users\tpt\Desktop\\github\CERTIFICATE\certificate\software中.在您的Innosetup中,您指向c:\Users\tpt\Desktop\innosetup\software.您需要更改Innosetup中的Signtools设置,以指向正确的位置. 其他解决方案 而不是给出未签名的设置目录,只需替换为$ f