100 lines
3.4 KiB
Plaintext
100 lines
3.4 KiB
Plaintext
|
|
; 脚本由 Inno Setup 脚本向导生成。
|
|||
|
|
; 有关创建 Inno Setup 脚本文件的详细信息,请参阅帮助文档!
|
|||
|
|
|
|||
|
|
#define MyAppName "RingPlacement"
|
|||
|
|
#define MyAppVersion "1.0.0.0"
|
|||
|
|
#define MyAppPublisher "SZMEDI"
|
|||
|
|
#define MyAppURL ""
|
|||
|
|
#define MyAppExeName "RingPlacement.exe"
|
|||
|
|
|
|||
|
|
[Setup]
|
|||
|
|
; 注意:AppId 的值唯一标识此应用程序。不要在其他应用程序的安装程序中使用相同的 AppId 值。
|
|||
|
|
; (若要生成新的 GUID,请在 IDE 中单击 "工具|生成 GUID"。)
|
|||
|
|
AppId={{324CFC31-9E72-4500-AB7F-A72220E13DF8}
|
|||
|
|
AppName={#MyAppName}
|
|||
|
|
AppVersion={#MyAppVersion}
|
|||
|
|
;AppVerName={#MyAppName} {#MyAppVersion}
|
|||
|
|
AppPublisher={#MyAppPublisher}
|
|||
|
|
AppPublisherURL={#MyAppURL}
|
|||
|
|
AppSupportURL={#MyAppURL}
|
|||
|
|
AppUpdatesURL={#MyAppURL}
|
|||
|
|
UninstallDisplayName={#MyAppName}
|
|||
|
|
;DefaultDirName={code:GetInstallPath}\MSDevTool
|
|||
|
|
ArchitecturesInstallIn64BitMode=x64compatible
|
|||
|
|
CreateAppDir=no
|
|||
|
|
LicenseFile=.\bin\Release\License.txt
|
|||
|
|
InfoBeforeFile=.\bin\Release\License.txt
|
|||
|
|
InfoAfterFile=.\bin\Release\License.txt
|
|||
|
|
; 取消对以下行的注释以在非管理安装模式下运行(仅针对当前用户进行安装)。
|
|||
|
|
PrivilegesRequired=admin
|
|||
|
|
OutputDir=.\Setup
|
|||
|
|
OutputBaseFilename={#MyAppName}
|
|||
|
|
Compression=lzma
|
|||
|
|
SolidCompression=yes
|
|||
|
|
WizardStyle=modern
|
|||
|
|
|
|||
|
|
[Files]
|
|||
|
|
;Source: ".\bin\Release\*"; DestDir: "{code:GetInstallPath}\MSDevTool"; Flags: ignoreversion(创建子文件夹) recursesubdirs(递归子文件夹) createallsubdirs
|
|||
|
|
Source: ".\bin\Release\*"; DestDir: "{code:GetInstallPath}\RingPlacementAddin"; Flags: ignoreversion recursesubdirs createallsubdirs
|
|||
|
|
;Source: ".\bin\Release\Config\MSDevTool.dgnlib"; DestDir: "C:\ProgramData\Bentley\MicroStation 2024\Configuration\Organization\Dgnlib\Gui"; Flags: ignoreversion recursesubdirs createallsubdirs
|
|||
|
|
Source: ".\bin\Release\RingPlacementAddin.cfg"; DestDir: "{code:GetInstallPath}\config\appl"; Flags: ignoreversion
|
|||
|
|
|
|||
|
|
; 注意:不要在任何共享系统文件上使用 "Flags: ignoreversion"
|
|||
|
|
|
|||
|
|
[Code]
|
|||
|
|
var
|
|||
|
|
GlobalInstallPath: string; // 全局变量存储安装路径
|
|||
|
|
|
|||
|
|
// 主检查函数:验证安装状态并获取路径
|
|||
|
|
function InitializeSetup(): Boolean;
|
|||
|
|
var
|
|||
|
|
RootKey: Integer;
|
|||
|
|
SubKeys: TArrayOfString;
|
|||
|
|
i: Integer;
|
|||
|
|
CurrentKey: string;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
RootKey := HKLM64;
|
|||
|
|
|
|||
|
|
// 检查主注册表项是否存在
|
|||
|
|
if RegKeyExists(RootKey, 'SOFTWARE\Bentley\MicroStation') then
|
|||
|
|
begin
|
|||
|
|
// 获取所有GUID子项
|
|||
|
|
if RegGetSubkeyNames(RootKey, 'SOFTWARE\Bentley\MicroStation', SubKeys) then
|
|||
|
|
begin
|
|||
|
|
// 遍历所有GUID子项
|
|||
|
|
for i := 0 to GetArrayLength(SubKeys) - 1 do
|
|||
|
|
begin
|
|||
|
|
CurrentKey := 'SOFTWARE\Bentley\MicroStation\' + SubKeys[i];
|
|||
|
|
|
|||
|
|
// 检查是否存在安装路径参数
|
|||
|
|
if RegValueExists(RootKey, CurrentKey, 'ProgramPath') and
|
|||
|
|
RegQueryStringValue(RootKey, CurrentKey, 'ProgramPath', GlobalInstallPath) then
|
|||
|
|
begin
|
|||
|
|
Result := True;
|
|||
|
|
Break; // 找到有效路径即终止循环
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
// 未找到有效安装
|
|||
|
|
if not Result then
|
|||
|
|
begin
|
|||
|
|
MsgBox('未检测到 MicroStation 安装,安装程序将退出。', mbCriticalError, MB_OK);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
// 额外验证目录物理存在
|
|||
|
|
if not DirExists(GlobalInstallPath) then
|
|||
|
|
begin
|
|||
|
|
MsgBox('检测到无效安装路径:' + GlobalInstallPath, mbError, MB_OK);
|
|||
|
|
Result := False;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
// 直接返回已存储的路径
|
|||
|
|
function GetInstallPath(Param: string): string;
|
|||
|
|
begin
|
|||
|
|
Result := GlobalInstallPath;
|
|||
|
|
end;
|