inno-setup 脚本中的可选组件和类型

2024-01-28

我创建了以下 InnoSetup 脚本,用于添加可选组件,遵循此 StackOverflow 答案的建议:Inno Setup - 正确使用[类型]、[组件]和[任务] https://stackoverflow.com/questions/8890828/inno-setup-correct-use-of-types-components-and-tasks .

问题是,当我运行脚本并选择安装 Sherlock 或 Toby 类型时,我发现 Watson 也已安装。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Watson"
#define MyAppVersion "1.0"
#define MyAppExeName "Watson.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{15C6F30B-A29D-48AD-A97A-9FDB4DD80EAE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=Z:\EGPL Librarian Releases\Setup Scripts\All Install
OutputBaseFilename=LibrarianSetup
Compression=lzma
SolidCompression=yes
WizardImageFile=compiler:WizModernImage-IS.bmp
WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp
VersionInfoVersion=1.0
VersionInfoCompany=Draper Laboratory
VersionInfoDescription=Watson Librarian Server
VersionInfoTextVersion=Watson 1.0
VersionInfoCopyright=2012
VersionInfoProductName=EGPL Librarian
VersionInfoProductVersion=1.0
VersionInfoProductTextVersion=Watson 1.0

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Components: Watson Full

[Files]
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Watson.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.Linq.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.PostgreSql.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.PostgreSql.Linq.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.PostgreSql.xml"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Devart.Data.xml"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Ionic.Zip.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Watson.application"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Watson.exe.config"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Watson.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
Source: "Z:\EGPL Librarian Releases\Sample Installation\Watson\Watson.pdb"; DestDir: "{app}"; Flags: ignoreversion; Components: Watson Full
; Toby
Source: "Z:\EGPL Librarian Releases\Sample Installation\wwwroot\Toby\*"; DestDir: "c:\\wwwroot\Toby"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: Toby Full
; Sherlock
Source: "Z:\EGPL Librarian Releases\Sample Installation\wwwroot\Sherlock\*"; DestDir: "c:\\wwwroot\Sherlock"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: Sherlock Full
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Components: Full Watson
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Components: Full Watson
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Components: Full Watson; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Components: Watson Full

[Types]
Name: "Everything"; Description: "Install Watson, Sherlock, and Toby"
Name: "Watson"; Description: "Install Only Watson"
Name: "Toby"; Description: "Install Only Toby"
Name: "Sherlock"; Description: "Install Only Sherlock"

[Components]
Name: "Full"; Description: "Full Install"; Types: Watson Everything Toby Sherlock
Name: "Watson"; Description: "Watson Component"; Types: Watson
Name: "Toby"; Description: "Toby Component"; Types: Toby
Name: "Sherlock"; Description: "Sherlock Component"; Types: Sherlock

[Code]
function IsDotNetDetected(version: string; service: cardinal): boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
//    'v1.1.4322'     .NET Framework 1.1
//    'v2.0.50727'    .NET Framework 2.0
//    'v3.0'          .NET Framework 3.0
//    'v3.5'          .NET Framework 3.5
//    'v4\Client'     .NET Framework 4.0 Client Profile
//    'v4\Full'       .NET Framework 4.0 Full Installation
//    'v4.5'          .NET Framework 4.5
//
// service -- Specify any non-negative integer for the required service pack level:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
var
    key: string;
    install, release, serviceCount: cardinal;
    check45, success: boolean;
begin
    // .NET 4.5 installs as update to .NET 4.0 Full
    if version = 'v4.5' then begin
        version := 'v4\Full';
        check45 := true;
    end else
        check45 := false;

    // installation key group for all .NET versions
    key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;

    // .NET 3.0 uses value InstallSuccess in subkey Setup
    if Pos('v3.0', version) = 1 then begin
        success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
    end else begin
        success := RegQueryDWordValue(HKLM, key, 'Install', install);
    end;

    // .NET 4.0/4.5 uses value Servicing instead of SP
    if Pos('v4', version) = 1 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
    end else begin
        success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
    end;

    // .NET 4.5 uses additional value Release
    if check45 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Release', release);
        success := success and (release >= 378389);
    end;

    result := success and (install = 1) and (serviceCount >= service);
end;


function InitializeSetup(): Boolean;
begin
    if not IsDotNetDetected('v4\Full', 0) then begin
        MsgBox('Watson requires Microsoft .NET Framework 4.0 Full Profile.'#13#13
            'Please run dotNetFx40_Full_x86_x64.exe from the install disk,' #13
            'or download from www.microsoft.com/net,'#13
            'and then re-run the WatsonSetup.exe program.', mbInformation, MB_OK);
        result := false;
    end else begin
//        MsgBox('Found Microsoft .NET Framework 4.0.', mbInformation, MB_OK);
        result := true;
    end;
end;

将每个文件仅与一个组件链接,然后将每个组件与将包含该组件(及其所有文件)的不同类型的安装链接。

例如,定义这四种安装类型:

[Types]
Name: "full"; Description: "Install Watson, Sherlock, and Toby"
Name: "onlywatson"; Description: "Install Only Watson"
Name: "onlytoby"; Description: "Install Only Toby"
Name: "onlysherlock"; Description: "Install Only Sherlock"

您可以仅定义三个组件:

[Components]
Name: "watson"; Description: "Watson Component"; Types: onlywatson full
Name: "toby"; Description: "Toby Component"; Types: onlytoby full
Name: "sherlock"; Description: "Sherlock Component"; Types: onlysherlock full

正如你所看到的,每个component包括两种类型,一种是only X安装类型,另一个是full安装类型。

然后,为每个组件定义一个文件(除非您有充分的理由包含一个没有组件或不同组件的文件,但这对我来说没有多大意义)。

[Files]
;watson
Source: "files\Watson.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
Source: "files\Watson.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
Source: "files\other.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
; Toby
Source: "files\toby\*"; DestDir: "{app}\extras\Toby"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: toby
; Sherlock
Source: "files\Sherlock\*"; DestDir: "{app}\extras\Sherlock"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: sherlock

同样的推理也适用于其他部分,例如[Icons], [Tasks] or [Run],其中每个条目通常只属于一个组件。

我为你做了一个快速测试,将所有这些放在一起:

#define MyAppName "Watson"
#define MyAppVersion "1.0"
#define MyAppExeName "watson.txt"
#define MyAppPublisher "Me.com"
#define MyAppURL "Me.com"

[Setup]
AppId={{15C6F30B-A29D-48AD-A97A-9FDB4DD80EAE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=Installer
OutputBaseFilename=LibrarianSetup
Compression=lzma
SolidCompression=yes
WizardImageFile=compiler:WizModernImage-IS.bmp
WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp
VersionInfoVersion=1.0
VersionInfoCompany=Draper Laboratory
VersionInfoDescription=Watson Librarian Server
VersionInfoTextVersion=Watson 1.0
VersionInfoCopyright=2012
VersionInfoProductName=EGPL Librarian
VersionInfoProductVersion=1.0
VersionInfoProductTextVersion=Watson 1.0

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Types]
Name: "full"; Description: "Install Watson, Sherlock, and Toby"
Name: "onlywatson"; Description: "Install Only Watson"
Name: "onlytoby"; Description: "Install Only Toby"
Name: "onlysherlock"; Description: "Install Only Sherlock"

[Components]
Name: "watson"; Description: "Watson Component"; Types: onlywatson full
Name: "toby"; Description: "Toby Component"; Types: onlytoby full
Name: "sherlock"; Description: "Sherlock Component"; Types: onlysherlock full

[Files]
;watson
Source: "files\Watson.txt"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
Source: "files\Watson1.txt"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
Source: "files\Watson2.txt"; DestDir: "{app}"; Flags: ignoreversion; Components: watson
; Toby
Source: "files\toby\*"; DestDir: "{app}\extras\Toby"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: toby
; Sherlock
Source: "files\Sherlock\*"; DestDir: "{app}\extras\Sherlock"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: sherlock
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Components: Watson
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Components: Watson
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Components: Watson; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Components: Watson

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Components: Watson

它在我的机器上使用 Inno 5.5.2 进行了测试,并且可以按照您的要求工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

inno-setup 脚本中的可选组件和类型 的相关文章

  • 如何运行批处理文件以隐藏控制台窗口?

    我想在安装完成后启动我成功安装的Java程序 我原则上知道该怎么做 Run FileName app LaunchApp bat Description cm LaunchApp Flags nowait postinstall skipi
  • Win32 安装程序:有没有办法为每个用户写入 HKU 启动?

    是否有一个 Windows 安装程序可以为每个用户添加启动项 例如
  • 在inno setup中如何设置unins000.exe的产品名称、产品版本和版权属性[重复]

    这个问题在这里已经有答案了 我已经使用 inno setup 创建了一个安装程序 一切正常 但安装后将生成 unins000 exe 该 exe 没有设置产品名称 产品版本和版权属性 任何人都可以解释一下如何构建安装程序 以便 unins0
  • 从一种安装切换到另一种安装时,Inno setup 会隐藏安装项目

    我应该需要你的帮助 我想知道 Inno 是否有可能为 2 个产品设置 2 个不同的安装掩码 通过从下拉列表中选择 我们将这两种不同的安装称为 SETUP 和 PROGRAM 安装 SETUP 时 我们应该可以选中 取消选中以下复选框 将安装
  • 为每个文件调用 Inno Setup AfterInstall 函数

    我想在安装文件夹后调用一个函数 但是InstallEnv函数似乎被调用了几次 也许每个文件都是文件夹 待确认 有没有办法在安装所有这些文件后只调用一次 我无法使用Run部分 因为我想用返回代码进行错误捕获 Source InputFiles
  • 可以在 Inno Setup 脚本中使用环境变量吗?

    我需要找到一种方法来引用 Inno Setup 脚本文件 iss 中的环境变量 我发现了很多关于从 iss 修改环境的参考资料 但没有关于如何实际使用它的参考资料 这可能吗 当我尝试在 Files 部分中指定文件的源位置时 我遇到了同样的问
  • 准备卸载,就像 Inno Setup 中的准备安装页面一样

    我需要检查多个 exe 文件是否正在运行 通过安装程序安装 然后提示用户关闭它们 如果它们正在运行 如果没有则取消卸载过程 有没有办法在安装中为卸载程序提供类似 准备 页面之类的内容 或者我该如何实施这样的检查 甚至一个消息框也将是完美的
  • “ProgramData”目录的 Inno 设置常量

    我希望我的安装程序将一些文件复制到 Windows 中ProgramData目录中 我看到大多数 Windows 目录都有已在 Inno Setup 文档中定义的预定义常量 但是我看不到一个ProgramData 因此我计划使用类似的东西
  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • Inno Setup 仅卸载部分组件

    我有一个通用的应用程序 例如媒体播放器 用于安装在同一文件夹中的每个不同的零售产品 即 C 程序文件 myapp 并且不同的内容 例如电影 都安装在同一个文件夹中 C 程序文件 myapp 电影 对于每个单独的安装 单独的零售产品 我只是创
  • Inno Setup - 更新时删除旧的/过时的文件

    所以 我意识到这个问题以前已经被问过 事实上 在写这篇文章之前 我读了其中的 10 篇文章 但没有一个有适用的解决方案 我希望现在有人已经找到了一些东西 问题 我的程序是使用脚本构建的 在单个文件夹中创建所有最终文件 这些文件包含在 inn
  • 安装前检查 Java 是否存在

    我正在为 jar 应用程序创建 Inno Setup 安装程序 我现在想做的是在继续安装之前检查 java 是否存在 所以我只需要确保用户能够运行 java jar my app jar 我现在正在做的是 Code function Ini
  • Inno Setup安装文件名附加AppVersion

    如何追加AppVersion to setup exe file 换句话说 如何使输出文件名为sample setup 1 4 2 0 exe Setup AppName GetStringFileInfo Sample exe Produ
  • Innosetup - 在安装开始之前引用[Code]中的文件

    这是一种延续这个问题 https stackoverflow com questions 5658488 adding a help button to an innosetup wizard page 我想将一个文件包含在我的安装包中 C
  • Inno Setup 无法导入 DLL

    我没有运气将 Delphi DLL 导入 Inno Setup Unicode 该DLL有一个简单的过程 procedure Foo stdcall begin end exports Foo 该 DLL 包含在安装程序源中 并添加到文件列
  • Inno Setup:如何在选中的复选框上显示(隐藏/取消隐藏)密码

    我在输入查询页面中添加了一个复选框 以便在选中时使用它向我显示未发现的密码 但我不知道该怎么做 我已经创建了以下过程 但这个过程并没有改变我添加输入时的 true false 值 此过程添加了我完成这项工作的新文本框 请你帮助我好吗 pro
  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • Inno Setup:仅在不是 VERYSILENT 的情况下安装

    仅当安装程序未以非常安静的方式运行时 我才想安装并注册某个文件 我不知道我怎样才能做到这一点 我当前的线路是 Source M sqlite36 engine dll DestDir sys Flags uninsneveruninstal
  • Inno Setup 代码部分创建隐藏文件

    我正在处理 Inno Setup 项目 该项目正在使用SaveStringToFile函数在 Code 部分 我想将此文件设置为隐藏系统文件 但我无法找到有关如何实现此操作的信息 有任何想法吗 Inno Setup Pascal Scrip
  • inno setup bmp图像出现在单个页面上

    我希望 bmp 图像出现在单个页面 selectadditionaltasks 上 但它出现在所有页面上 我究竟做错了什么 procedure LogoOnClick Sender TObject var ResCode Integer b

随机推荐

  • Python:导入文件并转换为列表

    我需要帮助导入文件并将每一行转换为列表 该文件的示例如下所示 p wfgh 1111 11111 111111 287 48 0 65626 1818 0 4654 21512 02020 0 第一行以 p 开头是标题 其余是子句 每个子句
  • Matlab中复变量的曲线拟合

    我想求解下图所示的方程组 矩阵系统 其中矩阵 A 的分量是复数 角度 theta 从0 to 2 pi有 m 个分区 并且n 9 已知值z x iy 假设矩阵 z 的 x 和 y 为 z 0 1 0148 0 1736 0 9848 0 3
  • 安装模拟器卡在“准备虚拟机”上

    我已经成功安装了 Android 版 VS Emulator 但是当我尝试安装设备时 它卡在 准备虚拟机 上 在此之前 Android VS 模拟器要求在提升模式下运行 显示以下问题 我还附上了 Hyper v 管理器中虚拟交换机的屏幕截图
  • 从 Windows Phone 8 设备检索故障转储

    有没有办法在开发期间从 Windows Phone 8 中获取故障转储 我正在寻找一个与普通 Win32 应用程序崩溃时类似的转储文件 或者类似于崩溃时 iOS 设备上保存的内容 以便稍后进行调查 我的问题具体是关于在崩溃后以某种方式从手机
  • App Engine 上的 Flask-SQLAlchemy 使用以下命令连接到 Cloud Compute Engine 上的 MSSQL 数据库

    我对整个 GCP 非常陌生 我需要为客户的项目部署 Flask 应用程序 考虑到 Google 提供的所有文档 部署应用程序非常简单 而且由于使用灵活的应用程序引擎似乎是最简单的方法 因此我正在尝试使用它 我遇到的问题是尝试连接到在计算引擎
  • getaddrinfo:节点名称或服务名称已提供,或未知

    我有一个 Ruby on Rails 应用程序 正在运行 Mac OS X 10 6 的计算机上部署 出现问题的代码是由delayed job 运行的 仅当通过delayed job运行时才会出现该问题 如果我在控制台中运行它 rails
  • 消除重复的多边形州/国家/地区共享边界

    我正在使用 GEOJSON 绘制带有传单的世界地图 并用虚线绘制边界 如下图所示 The problem I am having is that the line is not shared by two states if two sta
  • 使用 Typescript 导入 Electron 类

    如何将 Electron 类导入 Typescript 文件 以便智能感知正常运行 例如 我想把这个 var BrowserWindow require browser window var app require app app on r
  • 在单独的进程上运行 Goroutines(多处理)

    我目前有一个 MQTT 代码 可以订阅主题 打印收到的消息 然后向新主题发布进一步的指令 这订阅 打印在一个 Goroutine 中完成 并且出版是在另一个 Goroutine 中完成的 这是我的代码 var wg pg sync Wait
  • .net 中的数据类型和 C# 中的数据类型哪一种更快? [复制]

    这个问题在这里已经有答案了 大家好 首先我很抱歉 因为我的母语不是英语 我想了解 C 数据类型和 net 数据类型哪一种更快 我尝试通过下面的代码来理解 我认为 net 数据类型更快 这是正确的吗 我在 x86 和 x64 平台上测试了这段
  • 在Spring中正确使用Log4jConfigurer

    在我们的应用程序中 我们决定将 log4j 配置文件命名为自定义名称 以避免无意中从另一个 jar 加载默认文件 为了配置它 我们使用org springframework util Log4jConfigurer指定 log4j 位置
  • 在 Windows Phone 8.1 中以编程方式检测重新启动

    我有一个 WP 8 1 运行时 它启动了DeviceUseTrigger后台任务 问题是 每当手机重新启动时 该任务显然会取消 但任务注册仍然存在 所以当我下次启动我的应用程序时后台任务appears在现实没有跑步的情况下跑步 我想要某种方
  • 延迟脚本加载

    所以如果我有以下内容 我只是想延迟使用 settimeout 调用该文件的执行 我该怎么做 很奇怪的是 我在一个简单的函数上使用 settimeout 没有问题 但我在这个看似更简单的情况下有点困惑 我的想法是我可以创建一个在 x 时间后调
  • Apache Camel Java DSL 在正文中添加换行符

    因此 我在 Java DSL 中设置了一个 netty4 套接字路由 如下所示 Override public void configure throws Exception String dailyDataUri SOCKET daily
  • AWS 工作层 cron - 服务器错误 #500 - “发布 http 1.1 500 AWS aws-sqsd/2.0”

    我正在尝试在 Elastic Beanstalk 上设置一个 cronjob 任务正在安排中 出于测试目的 它应该每分钟运行一次 但是它不起作用 这是一个 Django 应用程序 该应用程序在两个环境中运行 一个是工作环境 另一个是 托管
  • Flutter - 检测充满其他小部件的屏幕上的点击

    我正在尝试检测屏幕上的点击 我尝试过使用的多种变体GestureDetector但这只会导致应用程序检测到点击子元素 and 不是屏幕 这是代码 class QQHome extends StatelessWidget override W
  • 如何平滑徒手绘制的 SVG 路径?

    我正在寻找一种解决方案 将由大量 auf LineTo 段组成的手绘 用户绘制的 SVG 路径转换为更平滑的路径 首选语言是 JavaScript 但欢迎任何建议 首先 我建议使用一个好的图形库 例如raphael 它将简化实际使用 jav
  • iOS 8 横向:键盘无法正确显示

    我有一个为 iOS8 编译的应用程序 该应用程序在项目设置中设置为仅允许纵向 根据设计 应用程序的视图不会旋转为横向 在 iOS7 中 当您旋转设备以横向时 键盘不会旋转 这是我想要的行为 但是 在 iOS8 中 当您将设备旋转到横向时 键
  • 使用 RecyclerView 适配器更新数据的最佳方法[重复]

    这个问题在这里已经有答案了 当我必须使用经典适配器时ListView https developer android com guide topics ui layout listview html 我在 ListView 中更新数据 如下
  • inno-setup 脚本中的可选组件和类型

    我创建了以下 InnoSetup 脚本 用于添加可选组件 遵循此 StackOverflow 答案的建议 Inno Setup 正确使用 类型 组件 和 任务 https stackoverflow com questions 889082