mirror of
https://github.com/wez/wezterm.git
synced 2024-11-28 01:06:37 +03:00
71d98d84ca
When installed by the installer, we add registry entries to configure directory context entries in explorer.exe that enable "Open WezTerm here" to function. This works by running your default program with the current working directory set to the one specified. I plan to only enable this when installed by the installer so that these can be deleted/updated by the installer later on. If you want wezterm to run a different program by default, then you can change the default_prog config in the wezterm configuration; I don't plan on adding lot of context menu entries for this. Note that attempting to open in the `C:\` root doesn't always seem to work for me. I haven't had a chance to understand what's going on there. refs: https://github.com/wez/wezterm/issues/155
145 lines
5.5 KiB
Plaintext
145 lines
5.5 KiB
Plaintext
; Script generated by the Inno Setup Script Wizard.
|
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
|
; vim:ts=2:sw=2:et:
|
|
|
|
#define MyAppName "WezTerm"
|
|
;#define MyAppVersion "1.5"
|
|
#define MyAppPublisher "Wez Furlong"
|
|
#define MyAppURL "http://wezfurlong.org/wezterm"
|
|
#define MyAppExeName "wezterm.exe"
|
|
|
|
[Setup]
|
|
AppId={{BCF6F0DA-5B9A-408D-8562-F680AE6E1EAF}
|
|
ArchitecturesAllowed=x64
|
|
ArchitecturesInstallIn64BitMode=x64
|
|
AppName={#MyAppName}
|
|
AppVersion={#MyAppVersion}
|
|
;AppVerName={#MyAppName} {#MyAppVersion}
|
|
AppPublisher={#MyAppPublisher}
|
|
AppPublisherURL={#MyAppURL}
|
|
AppSupportURL={#MyAppURL}
|
|
AppUpdatesURL={#MyAppURL}
|
|
DefaultDirName={autopf}\{#MyAppName}
|
|
DisableProgramGroupPage=yes
|
|
;LicenseFile=..\LICENSE.md
|
|
; Remove the following line to run in administrative install mode (install for all users.)
|
|
;PrivilegesRequired=lowest
|
|
;PrivilegesRequiredOverridesAllowed=dialog
|
|
OutputDir=..
|
|
OutputBaseFilename=WezTerm-Setup
|
|
SetupIconFile=..\assets\windows\terminal.ico
|
|
Compression=lzma
|
|
SolidCompression=yes
|
|
WizardStyle=modern
|
|
; Build 1809 is required for pty support
|
|
MinVersion=10.0.17763
|
|
ChangesEnvironment=true
|
|
|
|
[Languages]
|
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
|
|
[Files]
|
|
Source: "..\target\release\wezterm.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "..\target\release\conpty.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "..\target\release\OpenConsole.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "..\target\release\strip-ansi-escapes.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "..\assets\colors\*"; DestDir: "{app}\colors"; Flags: ignoreversion
|
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
|
|
|
[Icons]
|
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
|
|
[Run]
|
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
|
|
|
[Registry]
|
|
Root: HKA; Subkey: "Software\Classes\Directory\Background\shell\Open WezTerm here"; Flags: uninsdeletekey
|
|
Root: HKA; Subkey: "Software\Classes\Directory\Background\shell\Open WezTerm here"; ValueName: "icon"; ValueType: string; ValueData: "{app}\{#MyAppExeName}";
|
|
Root: HKA; Subkey: "Software\Classes\Directory\Background\shell\Open WezTerm here\command"; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" start --no-auto-connect --cwd ""%V\\"""
|
|
Root: HKA; Subkey: "Software\Classes\Directory\shell\Open WezTerm here"; Flags: uninsdeletekey
|
|
Root: HKA; Subkey: "Software\Classes\Directory\shell\Open WezTerm here"; ValueName: "icon"; ValueType: string; ValueData: "{app}\{#MyAppExeName}"
|
|
Root: HKA; Subkey: "Software\Classes\Directory\shell\Open WezTerm here\command"; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" start --no-auto-connect --cwd ""%V\\"""
|
|
|
|
[Code]
|
|
{ https://stackoverflow.com/a/46609047/149111 }
|
|
const EnvironmentKey = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment';
|
|
|
|
procedure EnvAddPath(instlPath: string);
|
|
var
|
|
Paths: string;
|
|
begin
|
|
{ Retrieve current path (use empty string if entry not exists) }
|
|
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths) then
|
|
Paths := '';
|
|
|
|
if Paths = '' then
|
|
Paths := instlPath + ';'
|
|
else
|
|
begin
|
|
{ Skip if string already found in path }
|
|
if Pos(';' + Uppercase(instlPath) + ';', ';' + Uppercase(Paths) + ';') > 0 then exit;
|
|
if Pos(';' + Uppercase(instlPath) + '\;', ';' + Uppercase(Paths) + ';') > 0 then exit;
|
|
|
|
{ Append App Install Path to the end of the path variable }
|
|
if Paths[length(Paths)] <> ';' then
|
|
Paths := Paths + ';';
|
|
|
|
Paths := Paths + instlPath + ';';
|
|
end;
|
|
|
|
{ Overwrite (or create if missing) path environment variable }
|
|
if RegWriteStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths)
|
|
then Log(Format('The [%s] added to PATH: [%s]', [instlPath, Paths]))
|
|
else Log(Format('Error while adding the [%s] to PATH: [%s]', [instlPath, Paths]));
|
|
end;
|
|
|
|
procedure EnvRemovePath(instlPath: string);
|
|
var
|
|
Paths: string;
|
|
P, Offset, DelimLen: Integer;
|
|
begin
|
|
{ Skip if registry entry not exists }
|
|
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths) then
|
|
exit;
|
|
|
|
{ Skip if string not found in path }
|
|
DelimLen := 1; { Length(';') }
|
|
P := Pos(';' + Uppercase(instlPath) + ';', ';' + Uppercase(Paths) + ';');
|
|
if P = 0 then
|
|
begin
|
|
{ perhaps instlPath lives in Paths, but terminated by '\;' }
|
|
DelimLen := 2; { Length('\;') }
|
|
P := Pos(';' + Uppercase(instlPath) + '\;', ';' + Uppercase(Paths) + ';');
|
|
if P = 0 then exit;
|
|
end;
|
|
|
|
{ Decide where to start string subset in Delete() operation. }
|
|
if P = 1 then
|
|
Offset := 0
|
|
else
|
|
Offset := 1;
|
|
{ Update path variable }
|
|
Delete(Paths, P - Offset, Length(instlPath) + DelimLen);
|
|
|
|
{ Overwrite path environment variable }
|
|
if RegWriteStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths)
|
|
then Log(Format('The [%s] removed from PATH: [%s]', [instlPath, Paths]))
|
|
else Log(Format('Error while removing the [%s] from PATH: [%s]', [instlPath, Paths]));
|
|
end;
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
begin
|
|
if CurStep = ssPostInstall then
|
|
EnvAddPath(ExpandConstant('{app}'));
|
|
end;
|
|
|
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
|
begin
|
|
if CurUninstallStep = usPostUninstall then
|
|
EnvRemovePath(ExpandConstant('{app}'));
|
|
end;
|