922 lines
30 KiB
Plaintext
922 lines
30 KiB
Plaintext
#ifdef X
|
|
; 如果同时定义了 ACAD 和 ZWCAD 整合打包
|
|
#ifdef ZWCAD
|
|
#ifdef ACAD
|
|
#define MERGER_CAD
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MERGER_CAD
|
|
#ifdef TRIAL_YEAR
|
|
#define MyAppName "Envi3D Design System TRIAL VERSION"
|
|
#else
|
|
#define MyAppName "Envi3D Design System"
|
|
#endif
|
|
#else
|
|
#ifdef ZWCAD
|
|
#ifdef TRIAL_YEAR
|
|
#define MyAppName "Envi3D Design System for ZWCAD TRIAL VERSION"
|
|
#else
|
|
#define MyAppName "Envi3D Design System for ZWCAD"
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
#ifdef TRIAL_YEAR
|
|
#define MyAppName "Envi3D Design System for AutoCAD TRIAL VERSION"
|
|
#else
|
|
#define MyAppName "Envi3D Design System for AutoCAD"
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MERGER_CAD
|
|
#define APPDATA "\ShangHuaSoft\Envi3D-2026-M"
|
|
#else
|
|
#ifdef ZWCAD
|
|
#define APPDATA "\ShangHuaSoft\Envi3D-2026-Z"
|
|
#endif
|
|
#ifdef ACAD
|
|
#define APPDATA "\ShangHuaSoft\Envi3D-2026-A"
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#define MyAppPublisher "ShangHuaSoft, Inc."
|
|
#define MyAppURL "http://www.shanghuasoft.com/"
|
|
|
|
#define DateTime GetDateTimeString('(yyyy.mm.dd-hh.nn)', '-', ':')
|
|
#define INIDateTime GetDateTimeString('yyyymmddhhnn', '', '')
|
|
|
|
#define PROFILES "SHS-ENVI"
|
|
#define VERSION "2026"
|
|
#define APPVER "V6.0"
|
|
|
|
#define PACKAGE_PATH "..\Original-File\cmake_environment"
|
|
#define REG_KEY_ACAD "Software\Autodesk\AutoCAD\R"
|
|
#define REG_KEY_ZWCAD "Software\ZWSOFT\ZWCAD\"
|
|
#define ENAME "Envi3D"
|
|
#define MyAppExeName "Envi3D.exe"
|
|
|
|
[Setup]
|
|
|
|
AppId={#guid}
|
|
#ifdef X
|
|
#ifdef MERGER_CAD
|
|
AppId={{B6B260A5-F162-4B7C-A6E6-FDA33D152FDC}
|
|
#else
|
|
#ifdef ZWCAD
|
|
AppId={{B6B260A5-F162-4B7C-A6E6-FDA33D152FDA}
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
AppId={{B6B260A5-F162-4B7C-A6E6-FDA33D152026}
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MERGER_CAD
|
|
#ifdef TRIAL_YEAR
|
|
OutputBaseFilename=Envi3D{#VERSION}_M_T{#DateTime}
|
|
#else
|
|
OutputBaseFilename=Envi3D{#VERSION}_M{#DateTime}
|
|
#endif
|
|
#else
|
|
#ifdef ZWCAD
|
|
#ifdef TRIAL_YEAR
|
|
OutputBaseFilename=Envi3D{#VERSION}_Z_T{#DateTime}
|
|
#else
|
|
OutputBaseFilename=Envi3D{#VERSION}_Z{#DateTime}
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
#ifdef TRIAL_YEAR
|
|
OutputBaseFilename=Envi3D{#VERSION}_A_T{#DateTime}
|
|
#else
|
|
OutputBaseFilename=Envi3D{#VERSION}_A{#DateTime}
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|
|
AppName={#MyAppName}
|
|
AppVersion={#APPVER}
|
|
AppPublisher={#MyAppPublisher}
|
|
AppPublisherURL={#MyAppURL}
|
|
AppSupportURL={#MyAppURL}
|
|
AppUpdatesURL={#MyAppURL}
|
|
DefaultDirName={sd}{#APPDATA}
|
|
DisableProgramGroupPage=yes
|
|
OutputDir=..\Output-File
|
|
SetupIconFile={#PACKAGE_PATH}\sys\poolplant.ico
|
|
OutputBaseFilename={#OutputBaseFilename}{#VERSION}{#DateTime}
|
|
|
|
Compression=lzma
|
|
SolidCompression=yes
|
|
DisableDirPage=no
|
|
;Uninstallable=no
|
|
PrivilegesRequired=admin
|
|
ArchitecturesInstallIn64BitMode=x64
|
|
;修改左侧图片(大)
|
|
;WizardImageFile=dh.bmp
|
|
;修改右上角图片(小)
|
|
;WizardSmallImageFile=xx.bmp
|
|
UsePreviousTasks=no
|
|
|
|
|
|
[Languages]
|
|
;Name: "Chinese"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
|
|
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
|
|
|
|
#ifndef TRIAL_YEAR
|
|
Name: "remote" ; Description:"集团授权";GroupDescription: "选择授权"; Flags: exclusive;
|
|
Name: "local" ; Description:"单机授权";GroupDescription: "选择授权"; Flags: exclusive
|
|
#endif
|
|
|
|
Name: "overwriteDB" ; Description:"覆盖当前用户数据";GroupDescription: "安装选项"; Flags: unchecked
|
|
|
|
; 开放路径权限
|
|
[Dirs]
|
|
Name: "{app}"; Permissions: everyone-modify
|
|
|
|
[Files]
|
|
;把7za.exe文件打包进来, 安装完成后,使用它来解压大文件
|
|
Source: "..\7za.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
|
|
|
|
Source: "{#PACKAGE_PATH}\StartApp.exe"; DestDir: "{app}\"; DestName: "{#MyAppExeName}"; Flags: ignoreversion
|
|
Source: "{#PACKAGE_PATH}\INIFileParser.dll"; DestDir: "{app}\"; Flags: ignoreversion
|
|
|
|
#ifndef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\上华软件-集团服务器设置工具.exe"; DestDir: "{app}\"; Flags: ignoreversion;Tasks: remote
|
|
Source: "{#PACKAGE_PATH}\上华软件-授权管理工具.exe"; DestDir: "{app}\"; Flags: ignoreversion;Tasks: local
|
|
#endif
|
|
|
|
Source: "{#PACKAGE_PATH}\demo\*"; DestDir: "{app}\demo\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
|
|
// 整合版本,AutoCAD平台需要 AsdkHlrDbx
|
|
#ifdef ACAD
|
|
Source: "{#PACKAGE_PATH}\AsdkHlrDbx\*"; DestDir: "{app}\AsdkHlrDbx\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
#endif
|
|
|
|
Source: "{#PACKAGE_PATH}\drawframe\*"; DestDir: "{app}\drawframe\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
Source: "{#PACKAGE_PATH}\temp\*"; DestDir: "{app}\temp\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
Source: "{#PACKAGE_PATH}\mdlapps\*"; DestDir: "{app}\mdlapps\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
Source: "{#PACKAGE_PATH}\Equipment2D\*"; DestDir: "{app}\Equipment2D\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist
|
|
|
|
Source: "{#PACKAGE_PATH}\Support\*"; DestDir: "{app}\Support\"; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall; Tasks: overwriteDB
|
|
Source: "{#PACKAGE_PATH}\dwb\*"; DestDir: "{app}\dwb\"; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall; Tasks: overwriteDB
|
|
Source: "{#PACKAGE_PATH}\tk\*"; DestDir: "{app}\tk\"; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall; Tasks: overwriteDB
|
|
|
|
Source: "{#PACKAGE_PATH}\Support\*"; DestDir: "{app}\Support\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist uninsneveruninstall; Tasks: not overwriteDB
|
|
Source: "{#PACKAGE_PATH}\dwb\*"; DestDir: "{app}\dwb\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist uninsneveruninstall; Tasks: not overwriteDB
|
|
Source: "{#PACKAGE_PATH}\tk\*"; DestDir: "{app}\tk\"; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist uninsneveruninstall; Tasks: not overwriteDB
|
|
|
|
;sys目录下文件比较复杂,在此一一说明
|
|
;*.db文件为用户数据文件,不要求覆盖
|
|
;dict.xml文件专版用户需要使用,不要求覆盖
|
|
|
|
;拷贝所有sys内的文件,覆盖
|
|
;过滤掉 hugeDb.7z 文件,在下面单独复制它,这样,如果它不存在话h,iss会报错.
|
|
Source: "{#PACKAGE_PATH}\sys\*"; DestDir: "{app}\sys\";Flags: ignoreversion recursesubdirs createallsubdirs;Excludes: "pp3d-*.mnu,pp3d-*.dll,*.db,hugeDb.7z"
|
|
|
|
;单独复制hugeDb.7z,防止丢失
|
|
Source: "{#PACKAGE_PATH}\sys\hugeDb.7z"; DestDir: "{app}\sys\";Flags: nocompression ignoreversion ;
|
|
|
|
;单独复制hugeHelp.7z,防止丢失
|
|
Source: "{#PACKAGE_PATH}\help\hugeHelp.7z"; DestDir: "{app}\help\";Flags: nocompression ignoreversion ;
|
|
|
|
;单独处里以下类型文件,不覆盖原有文件
|
|
Source: "{#PACKAGE_PATH}\sys\*.db"; DestDir: "{app}\sys\"; Flags: ignoreversion uninsneveruninstall; Tasks: overwriteDB
|
|
Source: "{#PACKAGE_PATH}\sys\*.db"; DestDir: "{app}\sys\"; Flags: ignoreversion uninsneveruninstall onlyifdoesntexist; Tasks: not overwriteDB
|
|
|
|
;拷贝 programData内的数据到{commonappdata}内,只有不存在时,并且不卸载
|
|
Source: "{#PACKAGE_PATH}\programdata\*"; DestDir: "{app}\sys\";Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall
|
|
|
|
;arx文件,不会拷贝目录里的子目录
|
|
#ifdef ZWCAD
|
|
#ifdef Z2023
|
|
Source: "{#PACKAGE_PATH}\Z2023\*"; DestDir: "{app}\Z2023\"; Flags: ignoreversion; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\Z2023\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\Z2023\"; Flags: ignoreversion; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\Z2023\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\Z2023\"; Flags: ignoreversion; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\Z2023\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\Z2023\"; Flags: ignoreversion; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef Z2024
|
|
Source: "{#PACKAGE_PATH}\Z2024\*"; DestDir: "{app}\Z2024\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\Z2024\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\Z2024\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\Z2024\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\Z2024\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\Z2024\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\Z2024\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef Z2025
|
|
Source: "{#PACKAGE_PATH}\Z2025\*"; DestDir: "{app}\Z2025\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\Z2025\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\Z2025\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\Z2025\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\Z2025\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\Z2025\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\Z2025\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef Z2026
|
|
Source: "{#PACKAGE_PATH}\Z2026\*"; DestDir: "{app}\Z2026\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\Z2026\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\Z2026\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\Z2026\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\Z2026\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\Z2026\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\Z2026\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
#ifdef R180
|
|
Source: "{#PACKAGE_PATH}\R180\*"; DestDir: "{app}\R180\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R180\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R180\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R180\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R180\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R180\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R180\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R190
|
|
Source: "{#PACKAGE_PATH}\R190\*"; DestDir: "{app}\R190\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R190\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R190\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R190\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R190\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R190\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R190\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R200
|
|
Source: "{#PACKAGE_PATH}\R200\*"; DestDir: "{app}\R200\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R200\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R200\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R200\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R200\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R200\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R200\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R210
|
|
Source: "{#PACKAGE_PATH}\R210\*"; DestDir: "{app}\R210\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R210\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R210\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R210\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R210\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R210\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R210\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R220
|
|
Source: "{#PACKAGE_PATH}\R220\*"; DestDir: "{app}\R220\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R220\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R220\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R220\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R220\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R220\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R220\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R230
|
|
Source: "{#PACKAGE_PATH}\R230\*"; DestDir: "{app}\R230\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R230\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R230\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R230\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R230\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R230\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R230\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R240
|
|
Source: "{#PACKAGE_PATH}\R240\*"; DestDir: "{app}\R240\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R240\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R240\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R240\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R240\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R240\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R240\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R243
|
|
Source: "{#PACKAGE_PATH}\R243\*"; DestDir: "{app}\R243\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R243\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R243\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R243\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R243\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R243\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R243\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R250
|
|
Source: "{#PACKAGE_PATH}\R250\*"; DestDir: "{app}\R250\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R250\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R250\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R250\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R250\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R250\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R250\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#ifdef R260
|
|
Source: "{#PACKAGE_PATH}\R260\*"; DestDir: "{app}\R260\"; Flags: ignoreversion ; Check: IsWin64
|
|
#ifdef TRIAL_YEAR
|
|
Source: "{#PACKAGE_PATH}\R260\{#PRODUCT}-TRIAL_YEAR\*"; DestDir: "{app}\R260\"; Flags: ignoreversion ; Check: IsWin64
|
|
#else
|
|
;Source: "{#PACKAGE_PATH}\R260\{#PRODUCT}-BAL_LOCAL\*"; DestDir: "{app}\R260\"; Flags: ignoreversion ; Check: IsWin64 ;Tasks: local
|
|
Source: "{#PACKAGE_PATH}\R260\{#PRODUCT}-BAL_REMOTE\*"; DestDir: "{app}\R260\"; Flags: ignoreversion ; Check: IsWin64 ;
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
[Registry]
|
|
Root: HKLM; Subkey: "Software\ShangHuaSoft\Environment"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Flags: uninsdeletekey
|
|
|
|
[Icons]
|
|
Name: "{commonprograms}\{#ENAME} {#Shortcut} {#APPVER}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{commondesktop}\{#ENAME} {#Shortcut} {#APPVER}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
#ifdef X
|
|
#ifdef MERGER_CAD
|
|
Name: "{commonprograms}\{#ENAME} {#APPVER}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{commondesktop}\{#ENAME} {#APPVER}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
#else
|
|
#ifdef ZWCAD
|
|
Name: "{commonprograms}\{#ENAME} ZWCAD {#APPVER}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{commondesktop}\{#ENAME} ZWCAD {#APPVER}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
#endif
|
|
#ifdef ACAD
|
|
Name: "{commonprograms}\{#ENAME} ACAD {#APPVER}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{commondesktop}\{#ENAME} ACAD {#APPVER}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
[Run]
|
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
|
|
|
[LangOptions]
|
|
LanguageID=$0804
|
|
|
|
[INI]
|
|
#ifdef TRIAL_YEAR
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "CName"; String: {#ENAME} TRIAL VERSION
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "EName"; String: {#ENAME} TRIAL VERSION
|
|
#else
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "CName"; String: {#ENAME}
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "EName"; String: {#ENAME}
|
|
#endif
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "ProfilesName"; String: {#PROFILES};
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "Version"; String: {#VERSION};
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "APPVer"; String: {#APPVER};
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "SubVer"; String: Build{#INIDateTime};
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-pid"; String: "工艺流程";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-plot-plan"; String: "总图设计";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-arch"; String: "土建设计";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-pipe"; String: "工艺管道";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-hvac-elec"; String: "暖通电气";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-statistic-plot"; String: "统计出图";
|
|
Filename: "{app}\sys\product.ini"; Section: "MENUS"; Key: "env-digital-collaboration"; String: "数字协同";
|
|
|
|
Filename: "{app}\sys\product.ini"; Section: "STARTAPP"; Key: "CADVer"; String: "{code:getCADVersionList}";
|
|
|
|
Filename: "{app}\sys\product.ini"; Section: "Product"; Key: "IconFile"; String: "poolplant.ico";
|
|
|
|
; 根据用户选择,把加密方式写到ini
|
|
#ifndef TRIAL_YEAR
|
|
Filename: "{app}\sys\product.ini"; Section: "STARTAPP"; Key: "bal"; String: "local"; Tasks:local;
|
|
Filename: "{app}\sys\product.ini"; Section: "STARTAPP"; Key: "bal"; String: "remote"; Tasks:remote;
|
|
#endif
|
|
|
|
[Messages]
|
|
ButtonFinish=完成(&F)
|
|
|
|
[InstallDelete]
|
|
;确保efeTemplete.dt ewnode2d.db 两个文件不在 水处理 安装目录下
|
|
Type: files; Name: "{app}\sys\efeTemplete.db"
|
|
Type: files; Name: "{app}\sys\ewnode2d.db"
|
|
|
|
[UninstallDelete]
|
|
; 在卸载的时候,删除解压出来的文件,db不需要删除,目前只需要删除help目录
|
|
Type: filesandordirs; Name:"{app}\help"
|
|
|
|
[code]
|
|
function getCADVersionList(vv: string):string;
|
|
var
|
|
s:string;
|
|
begin
|
|
s := '';
|
|
#ifdef R180
|
|
s :=s+ 'R180:R181:R182:'; // autoCAD 2010,2011,2012
|
|
#endif
|
|
#ifdef R190
|
|
s :=s+ 'R190:R191:'; // autoCAD 2013,2014
|
|
#endif
|
|
#ifdef R200
|
|
s :=s+ 'R200:R201:'; // autoCAD 2015,2016
|
|
#endif
|
|
#ifdef R210
|
|
s :=s+ 'R210:'; // autoCAD 2017
|
|
#endif
|
|
#ifdef R220
|
|
s :=s+ 'R220:'; // autoCAD 2018
|
|
#endif
|
|
#ifdef R230
|
|
s :=s+ 'R230:R231:'; // autoCAD 2019,2020
|
|
#endif
|
|
#ifdef R240
|
|
s :=s+ 'R240:R241:R242:'; // autoCAD 2021,2022,2023
|
|
#endif
|
|
#ifdef R243
|
|
s :=s+ 'R243:'; // autoCAD 2024
|
|
#endif
|
|
#ifdef R250
|
|
s :=s+ 'R250:R251:'; // autoCAD 2025,2026
|
|
#endif
|
|
#ifdef R260
|
|
s :=s+ 'R260:'; // autoCAD 2027
|
|
#endif
|
|
#ifdef Z2023
|
|
s :=s+ 'Z2023:'; // zwcad 2023
|
|
#endif
|
|
#ifdef Z2024
|
|
s :=s+ 'Z2024:'; // zwcad 2024
|
|
#endif
|
|
#ifdef Z2025
|
|
s :=s+ 'Z2025:'; // zwcad 2025
|
|
#endif
|
|
#ifdef Z2026
|
|
s :=s+ 'Z2026:'; // zwcad 2026
|
|
#endif
|
|
Result := s;
|
|
end;
|
|
|
|
function hasCADVersion(ver:string;regkey:string):boolean;
|
|
var
|
|
s:string;
|
|
begin
|
|
s := regkey + ver + '\';
|
|
Log(s);
|
|
if RegKeyExists(HKCU, s) then
|
|
begin
|
|
Result := true;
|
|
Log('exists');
|
|
end
|
|
else
|
|
begin
|
|
Result := false;
|
|
Log('no exists');
|
|
end;
|
|
end;
|
|
|
|
function getRoamableRootFolder(ver:string; name:string; regkey:string):string;
|
|
var
|
|
key:string;
|
|
value:string;
|
|
begin
|
|
key := regkey + ver + '\' + name + '\';
|
|
Log(key);
|
|
if RegKeyExists(HKCU, key) then
|
|
begin
|
|
if RegValueExists(HKCU, key, 'RoamableRootFolder') then
|
|
begin
|
|
RegQueryStringValue(HKCU, key, 'RoamableRootFolder', value);
|
|
Result := value;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function getDefaultACADContent_ACAD(ver:string; name:string):string;
|
|
var
|
|
key:string;
|
|
acad:string;
|
|
insDir:string;
|
|
RoamableRoot:string;
|
|
begin
|
|
RoamableRoot := getRoamableRootFolder(ver,name,'{#REG_KEY_ACAD}');
|
|
Log(RoamableRoot);
|
|
|
|
key := '{#REG_KEY_ACAD}' + ver + '\' + name + '\';
|
|
|
|
Log(key);
|
|
if RegKeyExists(HKLM, key) then
|
|
begin
|
|
if RegValueExists(HKLM, key, 'AcadLocation') then
|
|
begin
|
|
RegQueryStringValue(HKLM, key, 'AcadLocation', insDir);
|
|
acad := insDir + '\SUPPORT;';
|
|
acad := acad + insDir + '\FONTS;';
|
|
acad := acad + insDir + '\HELP;';
|
|
acad := acad + insDir + '\SUPPORT\zh-cn;';
|
|
acad := acad + RoamableRoot + 'SUPPORT;';
|
|
Log(acad);
|
|
Result := acad;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function getDefaultACADContent_ZWCAD(ver:string; name:string):string;
|
|
var
|
|
key:string;
|
|
acad:string;
|
|
insDir:string;
|
|
RoamableRoot:string;
|
|
begin
|
|
RoamableRoot := getRoamableRootFolder(ver,name,'{#REG_KEY_ZWCAD}');
|
|
Log(RoamableRoot);
|
|
|
|
key := '{#REG_KEY_ZWCAD}' + ver + '\' + name + '\';
|
|
|
|
Log(key);
|
|
if RegKeyExists(HKLM, key) then
|
|
begin
|
|
if RegValueExists(HKLM, key, 'Location') then
|
|
begin
|
|
RegQueryStringValue(HKLM, key, 'Location', insDir);
|
|
acad := insDir + 'Support;';
|
|
acad := acad + insDir + 'Support\' + name + ';';
|
|
acad := acad + insDir + 'fonts;';
|
|
acad := acad + insDir + name + '\help;';
|
|
acad := acad + insDir + 'Express;';
|
|
acad := acad + insDir + 'Support\color;';
|
|
acad := acad + insDir + 'Render;';
|
|
acad := acad + insDir + 'Render\appl\comm\DCL;';
|
|
acad := acad + insDir + 'Render\RPS Material Libraries\Generic;';
|
|
acad := acad + RoamableRoot + 'SUPPORT;';
|
|
Log(acad);
|
|
Result := acad;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure setCADProfilesKey_ACAD(verM:string; verS:string);
|
|
var
|
|
key:string;
|
|
subkey:string;
|
|
Names: TArrayOfString;
|
|
I: Integer;
|
|
S: String;
|
|
pfsKey: String;
|
|
ver:String;
|
|
sApp:String;
|
|
str1:String;
|
|
str2:String;
|
|
intM:Integer;
|
|
begin
|
|
ver := verM+'.'+verS;
|
|
sApp := ExpandConstant('{app}');
|
|
intM := StrToInt(verM);
|
|
|
|
if (hasCADVersion(ver, '{#REG_KEY_ACAD}')) then
|
|
begin
|
|
key := '{#REG_KEY_ACAD}' + ver + '\';
|
|
Log(key);
|
|
if RegGetSubkeyNames(HKCU, key, Names) then
|
|
begin
|
|
S := '';
|
|
for I := 0 to GetArrayLength(Names)-1 do
|
|
begin
|
|
subkey := key + Names[I] + '\Profiles\';
|
|
Log(subkey);
|
|
if RegKeyExists(HKEY_CURRENT_USER, subkey) then
|
|
begin
|
|
pfsKey := subkey + '{#PROFILES}{#VERSION}' + '\Drawing Window';
|
|
RegWriteDWordValue(HKCU, pfsKey, 'Parallel background', $00e1e1e1);
|
|
RegWriteDWordValue(HKCU, pfsKey, 'Parallel grid minor lines color', $00d2d2d2);
|
|
RegWriteDWordValue(HKCU, pfsKey, 'Background', $00000000);
|
|
RegWriteDWordValue(HKCU, pfsKey, 'XhairPickboxEtc', $00ffffff);
|
|
pfsKey := subkey + '{#PROFILES}{#VERSION}' + '\General';
|
|
if (verM = '24') and (verS = '3') then
|
|
str1 := sApp + '\R' + verM + '3;' + sApp + '\sys;' + sApp + '\dwb;'
|
|
else
|
|
str1 := sApp + '\R' + verM + '0;' + sApp + '\sys;' + sApp + '\dwb;';
|
|
str2 := getDefaultACADContent_ACAD(ver, Names[I]);
|
|
RegWriteStringValue(HKCU, pfsKey, 'ACAD', str1 + str2);
|
|
if intM > 18 then
|
|
begin
|
|
pfsKey := subkey + '{#PROFILES}{#VERSION}' + '\Variables';
|
|
RegWriteStringValue(HKCU, pfsKey, 'TRUSTEDPATHS', str1);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure setCADProfilesKey_ZWCAD(verM:string);
|
|
var
|
|
key:string;
|
|
subkey:string;
|
|
Names: TArrayOfString;
|
|
I: Integer;
|
|
S: String;
|
|
pfsKey: String;
|
|
ver:String;
|
|
sApp:String;
|
|
str1:String;
|
|
str2:String;
|
|
intM:Integer;
|
|
begin
|
|
ver := verM;
|
|
sApp := ExpandConstant('{app}');
|
|
intM := StrToInt(verM);
|
|
|
|
if (hasCADVersion(ver, '{#REG_KEY_ZWCAD}')) then
|
|
begin
|
|
key := '{#REG_KEY_ZWCAD}' + ver + '\';
|
|
Log(key);
|
|
if RegGetSubkeyNames(HKCU, key, Names) then
|
|
begin
|
|
S := '';
|
|
for I := 0 to GetArrayLength(Names)-1 do
|
|
begin
|
|
subkey := key + Names[I] + '\Profiles\';
|
|
Log(subkey);
|
|
if RegKeyExists(HKEY_CURRENT_USER, subkey) then
|
|
begin
|
|
pfsKey := subkey + '{#PROFILES}{#VERSION}' + '\Config';
|
|
str1 := sApp + '\Z' + verM + ';' + sApp + '\sys;' + sApp + '\dwb;';
|
|
str2 := getDefaultACADContent_ZWCAD(ver, Names[I]);
|
|
RegWriteStringValue(HKCU, pfsKey, 'ZWCADSEARCHPATH', str1 + str2);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function getCadPath_ZWCAD(ver:string):string;
|
|
var
|
|
key:string;
|
|
begin
|
|
key:='{#REG_KEY_ZWCAD}' + ver + '\zh-CN\';
|
|
if RegKeyExists(HKCU, key) then
|
|
begin
|
|
RegQueryStringValue(HKLM, key, 'Location', Result);
|
|
end
|
|
else
|
|
begin
|
|
Result := '';
|
|
end;
|
|
end;
|
|
|
|
// 中望CAD 专版授权
|
|
procedure setAuthorizationInfomation_ZWCAD(verM:string; ProfileName:string);
|
|
var
|
|
key:string;
|
|
subkey:string;
|
|
Names: TArrayOfString;
|
|
I: Integer;
|
|
S: String;
|
|
commResPath:String;
|
|
resDllPath:String;
|
|
begin
|
|
|
|
if (hasCADVersion(verM, '{#REG_KEY_ZWCAD}')) then
|
|
begin
|
|
key := '{#REG_KEY_ZWCAD}' + verM + '\';
|
|
Log(key);
|
|
if RegGetSubkeyNames(HKCU, key, Names) then
|
|
begin
|
|
S := '';
|
|
// ZWCAD\2024\...
|
|
for I := 0 to GetArrayLength(Names)-1 do
|
|
begin
|
|
// ZWCAD\2024\zh-CN\Profiles\...
|
|
subkey := key + Names[I] + '\Profiles\';
|
|
Log(subkey);
|
|
if RegKeyExists(HKEY_CURRENT_USER, subkey) then
|
|
begin
|
|
commResPath := subkey + ProfileName + '\CommonSettings';
|
|
resDllPath := getCadPath_ZWCAD(verM) + 'zh-CN\ZwCustomRes.dll';
|
|
if (FileExists(resDllPath)) then
|
|
begin
|
|
RegWriteStringValue(HKCU, commResPath, 'CustomResFile', resDllPath);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function IsVC2008RuntimeInstalled: boolean;
|
|
var
|
|
KeyPath
|
|
, VC2008_guid1, VC2008_guid2
|
|
, VC2008_guid3, VC2008_guid4 :string;
|
|
begin
|
|
Result := False;
|
|
KeyPath := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\';
|
|
VC2008_guid1 := KeyPath + '{350AA351-21FA-3270-8B7A-835434E766AD}';
|
|
VC2008_guid2 := KeyPath + '{8220EEFE-38CD-377E-8595-13398D740ACE}';
|
|
VC2008_guid3 := KeyPath + '{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}';
|
|
VC2008_guid4 := KeyPath + '{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}';
|
|
if RegKeyExists(HKLM, vc2008_guid1)
|
|
or RegKeyExists(HKLM, vc2008_guid2)
|
|
or RegKeyExists(HKLM, vc2008_guid3)
|
|
or RegKeyExists(HKLM, vc2008_guid4) then
|
|
begin
|
|
Result := True;
|
|
end;
|
|
end;
|
|
|
|
procedure unzipFile(dir:string; file:string);
|
|
var
|
|
UnzipCmd: String;
|
|
ZipFilePath: String;
|
|
ErrorCode: Integer;
|
|
begin
|
|
// 定义压缩包的具体路径
|
|
ZipFilePath := dir + '\' + file;
|
|
UnzipCmd := 'x "' + ZipFilePath + '" -o"' + dir + '" -y';
|
|
|
|
// 调用 7za.exe 开始静默解压,代码会在这里阻塞,直到解压完成
|
|
Exec(ExpandConstant('{tmp}\7za.exe'), UnzipCmd, '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
|
|
|
|
// 判断解压结果
|
|
if ErrorCode = 0 then
|
|
begin
|
|
// 解压成功,立即删除巨大的 7z 压缩包释放磁盘空间
|
|
if DeleteFile(ZipFilePath) then
|
|
Log(file + ' 解压成功并已删除。')
|
|
else
|
|
Log('警告: 压缩包解压成功,但清理'+ file + ' 失败,可能文件被占用。');
|
|
end
|
|
else
|
|
begin
|
|
// 解压失败时的处理
|
|
MsgBox('大型组件解压失败,请检查磁盘空间!错误码: ' + IntToStr(ErrorCode), mbError, MB_OK);
|
|
end;
|
|
end;
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
var
|
|
ResultCode:Integer;
|
|
begin
|
|
if CurStep=ssinstall then
|
|
//MsgBox('准备写入文件了', mbInformation, MB_OK);
|
|
begin
|
|
#ifdef ZWCAD
|
|
#ifdef Z2023
|
|
setCADProfilesKey_ZWCAD('2023');
|
|
setAuthorizationInfomation_ZWCAD('2023', '{#PROFILES}{#VERSION}');
|
|
setAuthorizationInfomation_ZWCAD('2023', '<<Unnamed Profile>>');
|
|
setAuthorizationInfomation_ZWCAD('2023', 'Default');
|
|
#endif
|
|
|
|
#ifdef Z2024
|
|
setCADProfilesKey_ZWCAD('2024');
|
|
setAuthorizationInfomation_ZWCAD('2024', '{#PROFILES}{#VERSION}');
|
|
setAuthorizationInfomation_ZWCAD('2024', '<<Unnamed Profile>>');
|
|
setAuthorizationInfomation_ZWCAD('2024', 'Default');
|
|
#endif
|
|
|
|
#ifdef Z2025
|
|
setCADProfilesKey_ZWCAD('2025');
|
|
setAuthorizationInfomation_ZWCAD('2025', '{#PROFILES}{#VERSION}');
|
|
setAuthorizationInfomation_ZWCAD('2025', '<<Unnamed Profile>>');
|
|
setAuthorizationInfomation_ZWCAD('2025', 'Default');
|
|
#endif
|
|
|
|
#ifdef Z2026
|
|
setCADProfilesKey_ZWCAD('2026');
|
|
setAuthorizationInfomation_ZWCAD('2026', '{#PROFILES}{#VERSION}');
|
|
setAuthorizationInfomation_ZWCAD('2026', '<<Unnamed Profile>>');
|
|
setAuthorizationInfomation_ZWCAD('2026', 'Default');
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
// 18,19 平台由于需要调试,都加上
|
|
setCADProfilesKey_ACAD('18','0');
|
|
setCADProfilesKey_ACAD('18','1');
|
|
setCADProfilesKey_ACAD('18','2');
|
|
|
|
setCADProfilesKey_ACAD('19','0');
|
|
setCADProfilesKey_ACAD('19','1');
|
|
setCADProfilesKey_ACAD('19','2');
|
|
|
|
#ifdef R200
|
|
setCADProfilesKey_ACAD('20','0');
|
|
setCADProfilesKey_ACAD('20','1');
|
|
#endif
|
|
|
|
#ifdef R210
|
|
setCADProfilesKey_ACAD('21','0');
|
|
#endif
|
|
|
|
#ifdef R220
|
|
setCADProfilesKey_ACAD('22','0');
|
|
#endif
|
|
|
|
#ifdef R230
|
|
setCADProfilesKey_ACAD('23','0');
|
|
setCADProfilesKey_ACAD('23','1');
|
|
#endif
|
|
|
|
#ifdef R240
|
|
setCADProfilesKey_ACAD('24','0');
|
|
setCADProfilesKey_ACAD('24','1');
|
|
setCADProfilesKey_ACAD('24','2');
|
|
#endif
|
|
|
|
#ifdef R243
|
|
setCADProfilesKey_ACAD('24','3');
|
|
#endif
|
|
|
|
#ifdef R250
|
|
setCADProfilesKey_ACAD('25','0');
|
|
setCADProfilesKey_ACAD('25','1');
|
|
#endif
|
|
|
|
#ifdef R260
|
|
setCADProfilesKey_ACAD('26','0');
|
|
#endif
|
|
#endif
|
|
end;
|
|
if CurStep=ssPostinstall then
|
|
begin
|
|
WizardForm.StatusLabel.Caption := '正在解压核心组件,这可能需要几分钟,请耐心等待...';
|
|
WizardForm.ProgressGauge.Style := npbstMarquee;
|
|
|
|
unzipFile(ExpandConstant('{app}\sys'), 'HugeDb.7z');
|
|
unzipFile(ExpandConstant('{app}\help'), 'HugeHelp.7z');
|
|
|
|
// 恢复正常进度条
|
|
WizardForm.ProgressGauge.Style := npbstNormal;
|
|
end;
|
|
if CurStep=ssDone then
|
|
begin
|
|
if IsVC2008RuntimeInstalled()=False then
|
|
begin
|
|
Exec(ExpandConstant('{app}\sys\' + '2008-vcredist_x64.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
|
|
end;
|
|
end;
|
|
//MsgBox('软件成功安装', mbInformation, MB_OK);
|
|
end;
|
|
|
|
function deleteKey(ver:string;regkey:string):boolean;
|
|
var
|
|
key:string;
|
|
subkey:string;
|
|
Names: TArrayOfString;
|
|
I: Integer;
|
|
S: String;
|
|
begin
|
|
if not hasCADVersion(ver, regkey) then
|
|
begin
|
|
Result := false;
|
|
exit;
|
|
end;
|
|
|
|
key := regkey + ver + '\';
|
|
Log(key);
|
|
if RegGetSubkeyNames(HKCU, key, Names) then
|
|
begin
|
|
S := '';
|
|
for I := 0 to GetArrayLength(Names)-1 do
|
|
begin
|
|
subkey := key + Names[I] + '\Profiles\' + '{#PROFILES}{#VERSION}';
|
|
Log(subkey);
|
|
if RegKeyExists(HKCU, subkey) then
|
|
RegDeleteKeyIncludingSubkeys(HKCU, subkey);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
|
begin
|
|
#ifdef ZWCAD
|
|
deleteKey('2023', '{#REG_KEY_ZWCAD}');
|
|
deleteKey('2024', '{#REG_KEY_ZWCAD}');
|
|
deleteKey('2025', '{#REG_KEY_ZWCAD}');
|
|
deleteKey('2026', '{#REG_KEY_ZWCAD}');
|
|
#endif
|
|
|
|
#ifdef ACAD
|
|
deleteKey('18.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('18.1', '{#REG_KEY_ACAD}');
|
|
deleteKey('18.2', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('19.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('19.1', '{#REG_KEY_ACAD}');
|
|
deleteKey('19.2', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('20.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('20.1', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('21.0', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('22.0', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('23.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('23.1', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('24.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('24.1', '{#REG_KEY_ACAD}');
|
|
deleteKey('24.2', '{#REG_KEY_ACAD}');
|
|
deleteKey('24.3', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('25.0', '{#REG_KEY_ACAD}');
|
|
deleteKey('25.1', '{#REG_KEY_ACAD}');
|
|
|
|
deleteKey('26.0', '{#REG_KEY_ACAD}');
|
|
#endif
|
|
end; |