diff --git a/base/install_base.iss b/base/install_base.iss index 074606e..5a04a1b 100644 --- a/base/install_base.iss +++ b/base/install_base.iss @@ -10,6 +10,9 @@ #define MyAppAssocName MyAppName + " File" #define MyAppAssocExt ".myp" #define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt +#define MyAppFirstPath "XManage" +#define MyAppResources "Resources" +#define InstallPassword GetDateTimeString('yyyymmdd', '', '') ; 默认配置 @@ -17,11 +20,11 @@ ; 不得复用,每个应用必须有唯一AppId AppId={{517C2278-C7C9-43D0-8E94-BFD2039C7BB8} ; 默认安装路径 -DefaultDirName={localappdata}\XManage +DefaultDirName={autopf}\{#MyAppFirstPath} ; 是否加密 ;Encryption=yes ; 安装密码 -;Password=20250801 +;Password={#InstallPassword} ; ICO图标 ; SetupIconFile=Resources\startup.ico UninstallFilesDir={app} @@ -61,6 +64,8 @@ Name: "Chinese"; MessagesFile: "compiler:Languages\Chinese.isl"; ;; 任务 [Tasks] ; 是否创建桌面图标 +; checkablealone 默认选中 +; unchecked 默认不选中 ;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked @@ -97,19 +102,19 @@ Name: "MySQL"; Description: "MySQL程序"; Types: full; Flags: checkablealone; ;; ============================================== 共享文件 禁止使用 ignoreversion 作为 Flags ============================================== ;; Readme ; 安装完的 readme 信息 -;Source: "Resources\Readme.md"; DestDir: "{app}"; Flags: isreadme; +;Source: "{#MyAppResources}\Readme.md"; DestDir: "{app}"; Flags: isreadme; ;; 文件 -Source: "Resources\grep.exe"; DestDir: "{app}\usr"; DestName: "grep.exe"; Flags: ignoreversion; Components: MainApp; +Source: "{#MyAppResources}\grep.exe"; DestDir: "{app}\usr"; DestName: "grep.exe"; Flags: ignoreversion; Components: MainApp; ;; 文件夹 ; recursesubdirs createallsubdirs 递归复制整个目录 -Source: "Resources\usr\*"; DestDir: "{app}\usr\"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: MainApp; +Source: "{#MyAppResources}\usr\*"; DestDir: "{app}\usr\"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: MainApp; ; onlyifdoesntexist 当文件不存在时安装 -Source: "Resources\jdk\*"; DestDir: "{app}\jdk\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist; Components: JDK; -Source: "Resources\redis\*"; DestDir: "{app}\redis\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: Redis; -Source: "Resources\io\*"; DestDir: "{app}\io\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: MinIO; -Source: "Resources\rocketmq\*"; DestDir: "{app}\rocketmq\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: RocketMQ; -Source: "Resources\nginx\*"; DestDir: "{app}\nginx\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: Nginx; -Source: "Resources\mysql\*"; DestDir: "{app}\mysql\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: MySQL; +Source: "{#MyAppResources}\jdk\*"; DestDir: "{app}\jdk\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist; Components: JDK; +Source: "{#MyAppResources}\redis\*"; DestDir: "{app}\redis\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: Redis; +Source: "{#MyAppResources}\io\*"; DestDir: "{app}\io\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: MinIO; +Source: "{#MyAppResources}\rocketmq\*"; DestDir: "{app}\rocketmq\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: RocketMQ; +Source: "{#MyAppResources}\nginx\*"; DestDir: "{app}\nginx\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: Nginx; +Source: "{#MyAppResources}\mysql\*"; DestDir: "{app}\mysql\"; Flags: onlyifdoesntexist recursesubdirs createallsubdirs; Components: MySQL; ;; 创建必要目录 @@ -142,68 +147,70 @@ Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; Value Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName}.exe,0"; Flags: uninsdeletevalue; Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}.exe"" ""%1"""; Flags: uninsdeletevalue; + + ;; 【grep、awk、sed、head、sort、ls、rm、xargs、rar、zip、tar、md5sum、sha1sum...】 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: MainApp; \ - ValueName: "X_COMMAND"; ValueData: "{app}"; Flags: uninsdeletevalue ; -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: MainApp; \ - ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\usr"; Check: NeedsAddPath('%X_COMMAND%\usr'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: MainApp; Flags: uninsdeletevalue; \ + ValueName: "X_COMMAND"; ValueData: "{app}"; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: MainApp; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\usr"; Check: NeedsAddPath('%X_COMMAND%\usr'); ;; 【Java】追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: JDK; \ - ValueName: "Path"; ValueData: "{olddata};%JAVA_HOME%\bin"; Check: NeedsAddPath('%JAVA_HOME%\bin'); Flags: preservestringtype; -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: JDK; \ +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: JDK; \ ValueName: "JAVA_HOME"; ValueData: "{app}\jdk"; Flags: uninsdeletevalue ; -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: JDK; \ +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: JDK; \ ValueName: "JDK_21"; ValueData: "{app}\jdk"; Flags: uninsdeletevalue ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: JDK; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%JAVA_HOME%\bin"; Check: NeedsAddPath('%JAVA_HOME%\bin'); ;; 【Redis】追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: Redis; \ - ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\redis"; Check: NeedsAddPath('%X_COMMAND%\redis'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: Redis; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\redis"; Check: NeedsAddPath('%X_COMMAND%\redis'); ;; 【MinIO】追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: MinIO; \ - ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\io"; Check: NeedsAddPath('%X_COMMAND%\io'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: MinIO; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\io"; Check: NeedsAddPath('%X_COMMAND%\io'); ;; 【Nginx】追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: Nginx; \ - ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\nginx"; Check: NeedsAddPath('%X_COMMAND%\nginx'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: Nginx; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%X_COMMAND%\nginx"; Check: NeedsAddPath('%X_COMMAND%\nginx'); ;; 【RocketMQ】追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: RocketMQ; \ - ValueName: "ROCKETMQ_HOME"; ValueData: "{app}\rocketmq"; Check: CheckRegistryPath('{app}\rocketmq'); Flags: uninsdeletevalue ; -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: RocketMQ; \ - ValueName: "ROCKETMQ_SBIN"; ValueData: "{app}\rocketmq\sbin"; Flags: uninsdeletevalue ; -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: RocketMQ; \ - ValueName: "Path"; ValueData: "{olddata};%ROCKETMQ_SBIN%"; Check: NeedsAddPath('%ROCKETMQ_SBIN%'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: RocketMQ; Flags: uninsdeletevalue; \ + ValueName: "ROCKETMQ_HOME"; ValueData: "{app}\rocketmq"; Check: CheckRegistryPath('{app}\rocketmq'); +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: RocketMQ; Flags: uninsdeletevalue; \ + ValueName: "ROCKETMQ_SBIN"; ValueData: "{app}\rocketmq\sbin"; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: RocketMQ; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%ROCKETMQ_SBIN%"; Check: NeedsAddPath('%ROCKETMQ_SBIN%'); ;; 【MySQL】环境变量【注册服务使用】 ; 数据库服务注册后服务名 -;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: MySQL; \ - ValueName: "X_MANAGE_DB_SC"; ValueData: "x_database"; Flags: uninsdeletevalue ; +;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: MySQL; Flags: uninsdeletevalue; AfterInstall: RefreshEnvironment; \ + ValueName: "X_MANAGE_DB_SC"; ValueData: "x_database"; ; 这两个值,将作为后续判断程序是否已经安装做依据 -;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: MySQL; \ - ValueName: "X_MANAGE_DB_EXE"; ValueData: "{app}\mysql\bin\mysqld.exe"; Flags: uninsdeletevalue ; -;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: MySQL; \ - ValueName: "X_MANAGE_DB_COF"; ValueData: "{app}\mysql\my.ini"; Flags: uninsdeletevalue ; +;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: MySQL; Flags: uninsdeletevalue; AfterInstall: RefreshEnvironment; \ + ValueName: "X_MANAGE_DB_EXE"; ValueData: "{app}\mysql\bin\mysqld.exe"; +;Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: MySQL; Flags: uninsdeletevalue ; AfterInstall: RefreshEnvironment; \ + ValueName: "X_MANAGE_DB_COF"; ValueData: "{app}\mysql\my.ini"; ; MySQL【通用服务】,导入脚本数据使用 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; AfterInstall: RefreshEnvironment; Components: MySQL; \ - ValueName: "X_COMMAND_MYSQL"; ValueData: "{app}\mysql\"; Flags: uninsdeletevalue ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; Components: MySQL; Flags: uninsdeletevalue; \ + ValueName: "X_COMMAND_MYSQL"; ValueData: "{app}\mysql\"; ; 追加到 PATH 变量 -Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; AfterInstall: RefreshEnvironment; Components: MySQL; \ - ValueName: "Path"; ValueData: "{olddata};%X_COMMAND_MYSQL%\bin"; Check: NeedsAddPath('%X_COMMAND_MYSQL%\bin'); Flags: preservestringtype ; +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; Components: MySQL; Flags: preservestringtype; AfterInstall: RefreshEnvironment; \ + ValueName: "Path"; ValueData: "{olddata};%X_COMMAND_MYSQL%\bin"; Check: NeedsAddPath('%X_COMMAND_MYSQL%\bin'); @@ -217,7 +224,15 @@ const // 定义 VC++ 2019 运行时的注册表检查路径 VC2019_REDIST_X64 = '{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}'; VC2019_REDIST_X86 = '{422B21A3-06FA-3F2F-A6C6-21BCC9B8E2F3}'; - + + +// 获取安装密码 +function GetInstallPassword(): string; +begin + Result := GetDateTimeString('yyyymmdd', '', ''); +end; + + function SendMessageTimeout( hWnd: Integer; Msg: Integer;