Files
envi-code/autoCompile/WF2026/ISS_File/cmake_environment.iss
T
2026-09-28 15:28:50 +08:00

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;