当前位置: 首页 > 知识库问答 >
问题:

使用Inno Setup进行静默安装的默认组件

端木宏才
2023-03-14

我正在Inno安装程序中开发一个安装文件。当用户选择“自定义”时,它有3个不同的可选组件要安装。

它工作正常,但当传递/SILENT参数时,不会安装任何组件。我想是因为没有检查组件。

…这是相关的代码片段:

[Types]
Name: custom; Description: {cm:instCustom}; Flags: iscustom
Name: full; Description: {cm:instFull}

[Components]
Name: Programador; Description: {cm:cmpProgramador}; Types: full
Name: Usuario; Description: {cm:cmpUsuario}; Types: full
Name: Reporte; Description: {cm:cmpReporte}; Types: full

[Icons]
Name: {group}\{cm:cmpProgramador}; Filename: {app}\Programador\{#MyAppExeNameA}; Components: Programador
Name: {group}\{cm:cmpUsuario}; Filename: {app}\Usuario\{#MyAppExeNameB}; Components: Usuario
Name: {group}\{cm:cmpReporte}; Filename: {app}\Reporte\{#MyAppExeNameC}; Components: Reporte
Name: {group}\Desinstalar MIVES; Filename: {uninstallexe}

[Registry]
Root: HKCU; Subkey: Software\UPC; Flags: uninsdeletekey
Root: HKCU; Subkey: Software\UPC\MIVES
Root: HKLM; Subkey: Software\UPC; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\UPC\MIVES
Root: HKLM; Subkey: Software\UPC\MIVES\Settings; ValueType: string; ValueName: InstallPath; ValueData: {app}

; file association depens of the components selected
Root: HKCR; Subkey: .mip; ValueType: string; ValueData: mip_auto_file; Flags: uninsdeletekey; Components: Programador
Root: HKCR; Subkey: mip_auto_file; Flags: uninsdeletekey; Components: Programador
Root: HKCR; Subkey: mip_auto_file\shell\open\command; ValueType: expandsz; ValueData: {app}\Programador\{#MyAppExeNameA} %1; Components: Programador

Root: HKCR; Subkey: .miu; ValueType: string; ValueData: miu_auto_file; Flags: uninsdeletekey; Components: Usuario
Root: HKCR; Subkey: miu_auto_file; Flags: uninsdeletekey; Components: Usuario
Root: HKCR; Subkey: miu_auto_file\shell\open\command; ValueType: expandsz; ValueData: {app}\Usuario\{#MyAppExeNameB} %1; Components: Usuario

Root: HKCR; Subkey: .mir; ValueType: string; ValueData: mir_auto_file; Flags: uninsdeletekey; Components: Reporte
Root: HKCR; Subkey: mir_auto_file; Flags: uninsdeletekey; Components: Reporte
Root: HKCR; Subkey: mir_auto_file\shell\open\command; ValueType: expandsz; ValueData: {app}\Reporte\{#MyAppExeNameC} %1; Components: Reporte

[Files]
Source: {#MyAppExeNameA}; DestDir: {app}\Programador; Flags: promptifolder; Components: Programador
Source: {#MyAppExeNameB}; DestDir: {app}\Usuario; Flags: promptifolder; Components: Usuario
Source: {#MyAppExeNameC}; DestDir: {app}\Reporte; Flags: promptifolder; Components: Reporte

我需要在传递 /silent/verysilent 参数时默认安装三个组件之一(组件“Usuario”)。

我想我必须使用检查:WizardSilent,但我不知道在哪里。事实上,我尝试在Components部分添加WizardSilent,但没有任何反应:

[Components]
Name: Programador; Description: {cm:cmpProgramador}; Types: full
Name: Usuario; Description: {cm:cmpUsuario}; Types: full; Check: WizardSilent

“文件”部分中都没有:

[Files]
Source: {#MyAppExeNameB}; DestDir: {app}\Usuario; Flags: promptifolder; Components: Usuario; Check: WizardSilent

以下是我需要的:

    < Li > < code > MIVES _ 211 . exe/SP-/very silent

编辑:我想我已经找到了一个解决方案,但我不知道这是否是一个好的解决方案。刚刚添加了一个新类型,包括向导静默检查:

[Types]
Name: silent; Description: {cm:instCustom}; Check: WizardSilent
Name: custom; Description: {cm:instCustom}; Flags: iscustom
Name: full; Description: {cm:instFull}

并在组件部分使用它,组件“Usario”(默认情况下,我希望在静默安装中安装的组件):

[Components]
Name: Programador; Description: {cm:cmpProgramador}; Types: full
Name: Usuario; Description: {cm:cmpUsuario}; Types: full silent
Name: Reporte; Description: {cm:cmpReporte}; Types: full

现在,它真的如我所愿。但我不希望有两种类型具有相同的描述,除非安装向导中只显示一种。

这是个好主意吗?

谢谢!

共有1个答案

仲孙思源
2023-03-14

我认为你的设置在概念上是错误的。

静默安装应安装典型/默认/通用安装。现在看起来默认安装是“完整”安装,但您希望静默安装的行为有所不同。这似乎不对。

因此,您应该具有默认的“典型”安装类型,带有“Usuario”组件。就像您现在拥有“静音”类型一样。但是,即使在交互式安装中,“典型”类型也是有意义的。

[Types]
Name: typical; Description: "Typical"
Name: full; Description: "Full"
Name: custom; Description: "Custom"; Flags: iscustom

[Components]
Name: Programador; Description: "Programador"; Types: full
Name: Usuario; Description: "Usuario"; Types: full typical
Name: Reporte; Description: "Reporte"; Types: full

无论如何,/SILENT 应该始终伴随着 /LOADINF 或至少 /COMPONENTS/TYPE。

您的“静默”类型的解决方案,虽然是一个黑客,但会有些效果,因为< code>Check: WizardSilent会在交互式安装中隐藏这种类型。

顺便说一句,请注意,在升级时,安装程序将使用以前(可能是交互式的)安装中选择的组件

 类似资料:
  • 问题内容: 我想运行“ make install”,这样我就能拥有所有需要的东西,但是我希望将它们安装在自己的文件夹中,而不是系统的/ usr / bin等。这可能吗?即使它引用了/ usr / bin等中的工具? 问题答案: 这取决于包装。如果Makefile是由GNU自动工具()生成的,则通常可以这样设置目标位置: 如果Makefile不是由自动工具生成的,而是随软件一起分发的,则只需在编辑器

  • 问题内容: 我将为我的Java应用程序创建一个安装程序。它使用mysql数据库,因此程序的安装必须包括mysql服务器5.5的安装,服务器的配置和数据库的加载。我使用Inno设置来执行此操作,但发现了一些问题。我找到了此代码,但它有点旧了 当我调试时,它会在第一条语句后生成错误。在第二条指令中找不到指定的程序。我尝试使用mysqld代替mysqld-nt,但没有任何变化 有人能帮我吗?? 问题答案

  • 静默安装在安装过程中不需要用户参与而且不显示用户界面。用户不会看到任何对话且不会被询问任何问题。这对于网络管理员希望不需要用户参与的安装或卸载一些程序,这样可以快速的对多台电脑执行操作。对于其他的开发者来说,把其他的安装程序整合到自己的安装程序并且把所有需要的信息收集到自己的安装程序而不是显示两个安装程序时非常有用的。 NSIS 安装程序和卸载程序都可以静默或非静默。当一个安装程序或卸载程序静默时

  • 安装节点模块时,我忘记添加的次数太多了。默认情况下是否有附加此选项的方法?这样每当我键入

  • 问题内容: 我想知道是否有一种方法可以将“ java.exe”作为后台进程执行(静默模式执行) 例如:java -cp。MyClass arg1 我想将以上语句作为后台进程运行,而无需打开命令窗口 问题答案: 在Windows下,使用代替。请参阅此处的链接,相关位复制在此处: 该命令与相同,除了没有关联的控制台窗口。使用时,你不想要一个命令提示符窗口出现。该发射器将,但是,如果启动由于某种原因失败

  • 本文向大家介绍java实现静默安装apk,包括了java实现静默安装apk的使用技巧和注意事项,需要的朋友参考一下 静默安装就是偷偷的把一个应用安装到手机上,就是屏蔽确认框,通过反射 只能写个主要的代码,这个是在linux编译用到,因为静默安装需要调用系统服务,在源码下编译,我也是搞了好久 InstallActivity.java main.xml 以上所述就是本文的全部内容了,希望大家能够喜欢。