Commented code signing

Commented code signing

Signtool is not part of the source tree nor futher documented. See #6

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/kidaa/windows-setup.git/'


Created an InnoSetup installer, installs to appdata, no admin rights needed

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "MultiMiner"

#define MyAppVersion GetEnv("MM_AppVersion")
#if MyAppVersion == ""
#define MyAppVersion "1.0"
#endif

#define MyAppPublisher "Nate Woolls"
#define MyAppURL "https://github.com/nwoolls/multiminer"
#define MyAppExeName "MultiMiner.Win.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{A59A265F-E97D-4A84-8E78-E8C59EB861CE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={localappdata}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename={#MyAppName}-{#MyAppVersion}
Compression=lzma
SolidCompression=yes
PrivilegesRequired=lowest

[Files]
Source: "..\MultiMiner.Win\bin\Release\MultiMiner.Win.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\Interop.IWshRuntimeLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\Interop.Shell32.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\MultiMiner.Coinchoose.Api.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\MultiMiner.Engine.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\MultiMiner.Xgminer.Api.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\MultiMiner.Xgminer.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\Miners\bfgminer\Extract bfgminer here.txt"; DestDir: "{app}\Miners\bfgminer\"; Flags: ignoreversion
Source: "..\MultiMiner.Win\bin\Release\Miners\cgminer\Extract cgminer here.txt"; DestDir: "{app}\Miners\cgminer\"; Flags: ignoreversion

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commonstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"

[Run]
Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"

[UninstallDelete]
Type: dirifempty; Name: "{app}"

error: pathspec 'Installer/Installer.iss' did not match any file(s) known to git


Improved user-data captions

Improved user-data captions


Updated Windows setup version.

Updated Windows setup version.

fatal: remote error: upload-pack: not our ref 0381f6b67a4b069a0b3dc0c9d37625c0e5d83885
fatal: the remote end hung up unexpectedly


Добавлен скрипт для инсталятора

Добавлен скрипт для инсталятора

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "UseCaseDiagram"
#define MyAppVersion "1.0"
#define MyAppPublisher "CommandBrain"
#define MyAppURL "http://code.google.com/p/usecasevstu/"
#define MyAppExeName "UseCase.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{A89AEBA5-5FE8-4C6C-88F8-7871070721B1}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=C:\Users\chehov\Desktop
OutputBaseFilename=UseCaseDiagram
SetupIconFile=D:\Programming\Project\usecasevstu\usecase_python\images\icon.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Programming\Project\usecasevstu\bin\UseCase.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\_hashlib.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\Microsoft.VC90.CRT.manifest"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\msvcm90.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\msvcp90.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\msvcr90.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\PyQt4.QtCore.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\PySide.QtCore.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\PySide.QtGui.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\pyside-python2.7.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\python27.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\QtCore4.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\QtGui4.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\select.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\shiboken-python2.7.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\sip.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\unicodedata.pyd"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\UseCase.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Programming\Project\usecasevstu\bin\UseCase.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent

error: pathspec 'scipt_setup.iss' did not match any file(s) known to git


Updated version

Updated version

#define MyAppName "NVM for Windows"
#define MyAppShortName "nvm"
#define MyAppLCShortName "nvm"
#define MyAppVersion "1.1.10"
#define MyAppPublisher "Ecor Ventures LLC"
#define MyAppURL "https://github.com/coreybutler/nvm-windows"
#define MyAppExeName "nvm.exe"
#define MyIcon "bin\nodejs.ico"
#define MyAppId "40078385-F676-4C61-9A9C-F9028599D6D3"
#define ProjectRoot "."

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
PrivilegesRequired=admin
; SignTool=MsSign $f
; SignedUninstaller=yes
AppId={#MyAppId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={userappdata}\{#MyAppShortName}
DisableDirPage=no
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile={#ProjectRoot}\LICENSE
OutputDir={#ProjectRoot}\dist\{#MyAppVersion}
OutputBaseFilename={#MyAppLCShortName}-setup
SetupIconFile={#ProjectRoot}\{#MyIcon}
Compression=lzma
SolidCompression=yes
ChangesEnvironment=yes
DisableProgramGroupPage=yes
ArchitecturesInstallIn64BitMode=x64 ia64
UninstallDisplayIcon={app}\{#MyIcon}
AppCopyright=Copyright (C) 2018-2021 Ecor Ventures LLC, Corey Butler, and contributors.

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
Source: "{#ProjectRoot}\bin\*"; DestDir: "{app}"; BeforeInstall: PreInstall; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: "{#ProjectRoot}\bin\install.cmd"

[Icons]
Name: "{group}\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{#MyIcon}"
Name: "{group}\Uninstall {#MyAppShortName}"; Filename: "{uninstallexe}"

[Code]
var
  SymlinkPage: TInputDirWizardPage;

function IsDirEmpty(dir: string): Boolean;
var
  FindRec: TFindRec;
  ct: Integer;
begin
  ct := 0;
  if FindFirst(ExpandConstant(dir + '\*'), FindRec) then
  try
    repeat
      if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
        ct := ct+1;
    until
      not FindNext(FindRec);
  finally
    FindClose(FindRec);
    Result := ct = 0;
  end;
end;

//function getInstalledVErsions(dir: string):
var
  nodeInUse: string;

procedure TakeControl(np: string; nv: string);
var
  path: string;
begin
  // Move the existing node.js installation directory to the nvm root & update the path
  RenameFile(np,ExpandConstant('{app}')+'\'+nv);

  RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'Path', path);

  StringChangeEx(path,np+'\','',True);
  StringChangeEx(path,np,'',True);
  StringChangeEx(path,np+';;',';',True);

  RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', path);

  RegQueryStringValue(HKEY_CURRENT_USER,
    'Environment',
    'Path', path);

  StringChangeEx(path,np+'\','',True);
  StringChangeEx(path,np,'',True);
  StringChangeEx(path,np+';;',';',True);

  RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', path);

  nodeInUse := ExpandConstant('{app}')+'\'+nv;

end;

function Ansi2String(AString:AnsiString):String;
var
 i : Integer;
 iChar : Integer;
 outString : String;
begin
 outString :='';
 for i := 1 to Length(AString) do
 begin
  iChar := Ord(AString[i]); //get int value
  outString := outString + Chr(iChar);
 end;

 Result := outString;
end;

procedure PreInstall();
var
  TmpResultFile, TmpJS, NodeVersion, NodePath: string;
  stdout: Ansistring;
  ResultCode: integer;
  msg1, msg2, msg3, dir1: Boolean;
begin
  // Create a file to check for Node.JS
  TmpJS := ExpandConstant('{tmp}') + '\nvm_check.js';
  SaveStringToFile(TmpJS, 'console.log(require("path").dirname(process.execPath));', False);

  // Execute the node file and save the output temporarily
  TmpResultFile := ExpandConstant('{tmp}') + '\nvm_node_check.txt';
  Exec(ExpandConstant('{cmd}'), '/C node "'+TmpJS+'" > "' + TmpResultFile + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
  DeleteFile(TmpJS)

  // Process the results
  LoadStringFromFile(TmpResultFile,stdout);
  NodePath := Trim(Ansi2String(stdout));
  if DirExists(NodePath) then begin
    Exec(ExpandConstant('{cmd}'), '/C node -v > "' + TmpResultFile + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
    LoadStringFromFile(TmpResultFile, stdout);
    NodeVersion := Trim(Ansi2String(stdout));
    msg1 := SuppressibleMsgBox('Node '+NodeVersion+' is already installed. Do you want NVM to control this version?', mbConfirmation, MB_YESNO, IDYES) = IDNO;
    if msg1 then begin
      msg2 := SuppressibleMsgBox('NVM cannot run in parallel with an existing Node.js installation. Node.js must be uninstalled before NVM can be installed, or you must allow NVM to control the existing installation. Do you want NVM to control node '+NodeVersion+'?', mbConfirmation, MB_YESNO, IDYES) = IDYES;
      if msg2 then begin
        TakeControl(NodePath, NodeVersion);
      end;
      if not msg2 then begin
        DeleteFile(TmpResultFile);
        WizardForm.Close;
      end;
    end;
    if not msg1 then
    begin
      TakeControl(NodePath, NodeVersion);
    end;
  end;

  // Make sure the symlink directory doesn't exist
  if DirExists(SymlinkPage.Values[0]) then begin
    // If the directory is empty, just delete it since it will be recreated anyway.
    dir1 := IsDirEmpty(SymlinkPage.Values[0]);
    if dir1 then begin
      RemoveDir(SymlinkPage.Values[0]);
    end;
    if not dir1 then begin
      msg3 := SuppressibleMsgBox(SymlinkPage.Values[0]+' will be overwritten and all contents will be lost. Do you want to proceed?', mbConfirmation, MB_OKCANCEL, IDOK) = IDOK;
      if msg3 then begin
        RemoveDir(SymlinkPage.Values[0]);
      end;
      if not msg3 then begin
        //RaiseException('The symlink cannot be created due to a conflict with the existing directory at '+SymlinkPage.Values[0]);
        WizardForm.Close;
      end;
    end;
  end;
end;

procedure InitializeWizard;
begin
  SymlinkPage := CreateInputDirPage(wpSelectDir,
    'Set Node.js Symlink', 'The active version of Node.js will always be available here.',
    'Select the folder in which Setup should create the symlink, then click Next.',
    False, '');
  SymlinkPage.Add('This directory will automatically be added to your system path.');
  SymlinkPage.Values[0] := ExpandConstant('{pf}\nodejs');
end;

function InitializeUninstall(): Boolean;
var
  path: string;
  nvm_symlink: string;
begin
  SuppressibleMsgBox('Removing NVM for Windows will remove the nvm command and all versions of node.js, including global npm modules.', mbInformation, MB_OK, IDOK);

  // Remove the symlink
  RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'NVM_SYMLINK', nvm_symlink);
  RemoveDir(nvm_symlink);

  // Clean the registry
  RegDeleteValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'NVM_HOME')
  RegDeleteValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'NVM_SYMLINK')
  RegDeleteValue(HKEY_CURRENT_USER,
    'Environment',
    'NVM_HOME')
  RegDeleteValue(HKEY_CURRENT_USER,
    'Environment',
    'NVM_SYMLINK')

  RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'Path', path);

  StringChangeEx(path,'%NVM_HOME%','',True);
  StringChangeEx(path,'%NVM_SYMLINK%','',True);
  StringChangeEx(path,';;',';',True);

  RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', path);

  RegQueryStringValue(HKEY_CURRENT_USER,
    'Environment',
    'Path', path);

  StringChangeEx(path,'%NVM_HOME%','',True);
  StringChangeEx(path,'%NVM_SYMLINK%','',True);
  StringChangeEx(path,';;',';',True);

  RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', path);

  Result := True;
end;

// Generate the settings file based on user input & update registry
procedure CurStepChanged(CurStep: TSetupStep);
var
  path: string;
begin
  if CurStep = ssPostInstall then
  begin
    SaveStringToFile(ExpandConstant('{app}\settings.txt'), 'root: ' + ExpandConstant('{app}') + #13#10 + 'path: ' + SymlinkPage.Values[0] + #13#10, False);

    // Add Registry settings
    RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'NVM_HOME', ExpandConstant('{app}'));
    RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'NVM_SYMLINK', SymlinkPage.Values[0]);
    RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'NVM_HOME', ExpandConstant('{app}'));
    RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'NVM_SYMLINK', SymlinkPage.Values[0]);

    RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppId}_is1', 'DisplayVersion', '{#MyAppVersion}');

    // Update system and user PATH if needed
    RegQueryStringValue(HKEY_LOCAL_MACHINE,
      'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
      'Path', path);
    if Pos('%NVM_HOME%',path) = 0 then begin
      path := path+';%NVM_HOME%';
      StringChangeEx(path,';;',';',True);
      RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', path);
    end;
    if Pos('%NVM_SYMLINK%',path) = 0 then begin
      path := path+';%NVM_SYMLINK%';
      StringChangeEx(path,';;',';',True);
      RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', path);
    end;
    RegQueryStringValue(HKEY_CURRENT_USER,
      'Environment',
      'Path', path);
    if Pos('%NVM_HOME%',path) = 0 then begin
      path := path+';%NVM_HOME%';
      StringChangeEx(path,';;',';',True);
      RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', path);
    end;
    if Pos('%NVM_SYMLINK%',path) = 0 then begin
      path := path+';%NVM_SYMLINK%';
      StringChangeEx(path,';;',';',True);
      RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', path);
    end;
  end;
end;

function getSymLink(o: string): string;
begin
  Result := SymlinkPage.Values[0];
end;

function getCurrentVersion(o: string): string;
begin
  Result := nodeInUse;
end;

function isNodeAlreadyInUse(): boolean;
begin
  Result := Length(nodeInUse) > 0;
end;

[Run]
Filename: "{cmd}"; Parameters: "/C ""mklink /D ""{code:getSymLink}"" ""{code:getCurrentVersion}"""" "; Check: isNodeAlreadyInUse; Flags: runhidden;

[UninstallDelete]
Type: files; Name: "{app}\nvm.exe";
Type: files; Name: "{app}\elevate.cmd";
Type: files; Name: "{app}\elevate.vbs";
Type: files; Name: "{app}\nodejs.ico";
Type: files; Name: "{app}\settings.txt";
Type: filesandordirs; Name: "{app}";

error: pathspec 'nvm.iss' did not match any file(s) known to git


Add Inno Setup package script

Add Inno Setup package script

#define MyAppName "Excel Filelist"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "Caleb Ely"
#define MyAppURL "https://github.com/le717/Excel-Filelist"
#define MyAppExeName "ExcelFilelist.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
AppId={{66B90F83-87B7-4508-9B38-E9FC7CDC3D80}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
DefaultDirName={localappdata}\ExcelFilelist
OutputDir=Output
DefaultGroupName={#MyAppName}
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableFinishedPage=yes
DisableStartupPrompt=yes
DisableReadyPage=yes
DisableReadyMemo=yes
DisableWelcomePage=yes
OutputBaseFilename=ExcelFilelist
Compression=lzma2/max
SolidCompression=yes
Uninstallable=no
CreateUninstallRegKey=no
PrivilegesRequired=lowest

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "src\blacklist.cfg"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\ExcelFilelist.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\library.zip"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\_bz2.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\_decimal.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\_elementtree.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\_hashlib.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\_lzma.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\_socket.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\PIL._imaging.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\pyexpat.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\select.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\unicodedata.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\win32api.pyd"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\python34.dll"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "bin\pywintypes34.dll"; DestDir: "{app}"; Flags: onlyifdoesntexist

[Run]
Filename: "{app}\ExcelFilelist.exe"; Parameters: "{src}"

[Code]
// Sourced from http://stackoverflow.com/a/22184880
const
  BN_CLICKED = 0;
  WM_COMMAND = $0111;
  CN_BASE = $BC00;
  CN_COMMAND = CN_BASE + WM_COMMAND;

procedure CurPageChanged(CurPageID: Integer);
var
  Param: Longint;
begin
  // if we are on the ready page, then...
  if CurPageID = wpReady then
  begin
    // the result of this is 0, just to be precise...
    Param := 0 or BN_CLICKED shl 16;
    // post the click notification message to the next button
    PostMessage(WizardForm.NextButton.Handle, CN_COMMAND, Param, 0);
  end;
end;

error: pathspec 'setup.iss' did not match any file(s) known to git


Added a windows icon. Added a windows installer build script.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{9B1B10AE-06A3-11DF-3D81-000C29E71C44}
AppName=Arbil
AppVerName=Arbil-1-2-x
AppPublisher=The Technical Group (TG) of Max Planck Institute for Psycholinguistics
AppPublisherURL=http://www.lat-mpi.eu/tools/arbil
AppSupportURL=http://www.lat-mpi.eu/tools/arbil
AppUpdatesURL=http://www.lat-mpi.eu/tools/arbil
DefaultDirName={pf}\Arbil
DefaultGroupName=Language archiving tools (LAT)
OutputDir=C:\windows\profiles\petwit\Desktop\arbil-build-1.2.x\distribution-win32
OutputBaseFilename=arbil-setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "basque"; MessagesFile: "compiler:Languages\Basque.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\windows\profiles\petwit\Desktop\arbil-build-1.2.x\arbil-1-2-17495.jar"; DestDir: "{app}"; Flags: ignoreversion
Source: "Z:\mnt\hgfs\mpi-repository\LAT\Arbil\branches\arbil.1.2.x\src\nl\mpi\arbil\resources\icons\arbil128x128.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\windows\profiles\petwit\Desktop\arbil-build-1.2.x\lib\*"; DestDir: "{app}\lib\"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\Arbil"; Filename: "{app}\arbil-1-2-17495.jar"; IconFileName:"{app}\arbil128x128.ico";
Name: "{group}\{cm:ProgramOnTheWeb,Arbil}"; Filename: "http://www.lat-mpi.eu/tools/arbil"
Name: "{commondesktop}\Arbil"; Filename: "{app}\arbil-1-2-17495.jar"; Tasks: desktopicon; IconFileName:"{app}\arbil128x128.ico";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Arbil"; Filename: "{app}\arbil-1-2-17495.jar"; Tasks: quicklaunchicon; IconFileName:"{app}\arbil128x128.ico";

[Run]
Filename: "{app}\arbil-1-2-17495.jar"; Description: "{cm:LaunchProgram,Arbil}"; Flags: shellexec postinstall skipifsilent

error: pathspec 'src/arbil-win-installer.iss' did not match any file(s) known to git


updated HeeksCNC installation version

updated HeeksCNC installation version

error: pathspec 'HeeksCNC' did not match any file(s) known to git
error: pathspec 'installer.iss' did not match any file(s) known to git


Build fix

Build fix

[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-DlgOrder]
Dlg0={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-Welcome-0
Count=9
Dlg1={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdLicense2Rtf-0
Dlg2={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-0
Dlg3={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-AskOptions-0
Dlg4={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-1
Dlg5={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-2
Dlg6={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdStartCopy2-0
Dlg7={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-AskYesNo-0
Dlg8={4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdFinish-0
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-Welcome-0]
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdLicense2Rtf-0]
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-0]
szDir=C:\Program Files\Zend\ZendOptimizer-3.2.0
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-AskOptions-0]
Result=1
Sel-0=0
Sel-1=0
Sel-2=1
Sel-3=0
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-1]
szDir=C:\Program Files\PHP4
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdAskDestPath-2]
szDir=C:\Program Files\Apache Group\Apache2\
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdStartCopy2-0]
Result=1
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-AskYesNo-0]
Result=1
[Application]
Name=Zend Optimizer
Version=3.2.0
Company=Zend Technologies
Lang=0009
[{4C24C6EB-FF40-4855-9C1D-42F8AFC75112}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0


fixed a problem with the latest Windows installer.


Update installer script

Update installer script

error: pathspec 'YouTube' did not match any file(s) known to git
error: pathspec 'Downloader' did not match any file(s) known to git
error: pathspec 'Setup' did not match any file(s) known to git
error: pathspec 'Script.iss' did not match any file(s) known to git


Better inno setup script for 0.3 and beyond

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/AustralianSynchrotron/sinspect.git/'


remove 32bit installers [skip ci]

remove 32bit installers [skip ci]

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/WPN-XM/WPN-XM.git/'


Update installer script to use all relative locations and point to Release

error: pathspec 'installer/inno' did not match any file(s) known to git
error: pathspec 'setup/main.iss' did not match any file(s) known to git


First stab and the new Installer.

First stab and the new Installer.

 - Usage of InnoSetup (already installed, no automated process)
 - All the paths and versions are hardcoded (for now)

Wins:

 - No complicated manifest of files to maintain or update!
 - No Enterprisy XML to maintain!
 - Less headaches for me :-)

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "RubyInstaller"
#define MyAppVerName "RubyInstaller 1.8.6-p368"
#define MyAppPublisher "RubyInstaller Team"
#define MyAppURL "http://rubyinstaller.org"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{190D87C5-B8F9-4E3D-A872-01B379F1752F}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={sd}\Ruby
DefaultGroupName=Ruby Installer 1.8.6-p368
DisableProgramGroupPage=yes
LicenseFile=LICENSE.rtf
OutputDir={#SourcePath}\..\..\pkg
OutputBaseFilename=rubyinstaller-1.8.6-p368
Compression=lzma
SolidCompression=yes

[Languages]
Name: english; MessagesFile: compiler:Default.isl

[Files]
Source: ..\..\sandbox\ruby18_mingw\*; DestDir: {app}; Flags: recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {#MyAppURL}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}

error: pathspec 'resources/installer/rubyinstaller.iss' did not match any file(s) known to git