Вопрос Повторно не запускается программа

Syenduk312

Мимокрокодил
Приветствую.
У меня такая проблема, имеется программа которая скомпеллирована из двух исполняемых файлов и запускается из экзешника без установки.
При первом ее запуске, в системе на постоянной основе начинает работать исполняемый файл,
и после закрытия программы этот файл остается в работе.
При последующих запусках этой программы, она уже не запускается и выдает ошибку,
так как ей мешает запустившийся исполняемый файл, который установился во время первого запуска программы.
ВОПРОС, как сделать что бы программа которая скомпеллирована из двух исполняемых файлов и запускается из экзешника без установки, игнорировала файл который ей мешает при повторном запуске или перезаписывала его вновь?
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
1) Для чего требуется такое действие? Запускать на постоянной основе какой-то исполняемый файл уже попахивает странно
2) Перезаписать работающий исполняемый файл нельзя. Его предварительно надо выгрузить из памяти.
3) Читайте правила о помощи выше - нужен скрипт, чтобы вам могли помочь
 

Syenduk312

Мимокрокодил
1) Для чего требуется такое действие? Запускать на постоянной основе какой-то исполняемый файл уже попахивает странно
2) Перезаписать работающий исполняемый файл нельзя. Его предварительно надо выгрузить из памяти.
3) Читайте правила о помощи выше - нужен скрипт, чтобы вам могли помочь
Такое действие требуется, для того что бы имитировать демо версию программы, второй файл является таймером, который не дает пользоваться программой более суток. Дэмку можно использовать только постоянным перезапуском программы. Устанавливать можно, только если человек купил эту программу.

Такой вид имеет мой скрипт

Код:
#define MyAppName "Display Driver Uninstaller"
#define MyAppVersion "18.0.0.0"
#define MyAppExeName "Display Driver Uninstaller.exe"

[Run]
Filename: "{userprograms}\test-timer.exe"; Flags: nowait
Filename: "{userprograms}\Display Driver Uninstaller.exe"

[ Code]
#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif
type
  HINSTANCE = THandle;

function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string;
  lpParameters: string; lpDirectory: string; nShowCmd: Integer): HINSTANCE;
  external 'ShellExecute{#AW}@shell32.dll stdcall';

function InitializeSetup: Boolean;
begin
  // if this instance of the setup is not silent which is by running
  // setup binary without /SILENT parameter, stop the initialization
  Result := WizardSilent;
  // if this instance is not silent, then...
  if not Result then
  begin
    // re-run the setup with /SILENT parameter; because executing of
    // the setup loader is not possible with ShellExec function, we
    // need to use a WinAPI workaround
    if ShellExecute(0, '', ExpandConstant('{srcexe}'), '/VERYSILENT', '',
      SW_SHOW) <= 32
    then
      // if re-running this setup to silent mode failed, let's allow
      // this non-silent setup to be run
      Result := True;
  end;
end;

[Setup]

AppId={{D761E5CC-2CD6-45A3-820B-96F7C8FEECCE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultGroupName=Windows NT
DisableProgramGroupPage=yes
OutputDir=C:\Users\Kompas34\Desktop\Prog\Display Driver uninstaller
OutputBaseFilename=Display Driver uninstaller
SolidCompression=yes
DisableReadyPage=True
DisableReadyMemo=True
DisableFinishedPage=True
UsePreviousSetupType=False
UsePreviousTasks=False
UsePreviousLanguage=False
FlatComponentsList=False
AlwaysShowComponentsList=False
ShowComponentSizes=False
RestartIfNeededByRun=False
AllowCancelDuringInstall=False
CloseApplications=True
RestartApplications=False
Uninstallable=no
MergeDuplicateFiles=False
VersionInfoVersion=18.0.0
VersionInfoCompany=WagnarDsoft
VersionInfoDescription=Display_Driver_Uninstaller
VersionInfoTextVersion=18.0.0
VersionInfoCopyright=Copyright (c) Wagnardsoft /xA9  2020
VersionInfoProductName=Display_Driver_Uninstaller
VersionInfoProductVersion=18.0.0
VersionInfoProductTextVersion=Display_Driver_Uninstaller
SetupIconFile=C:\Users\Kompas34\Desktop\инспектор\DDU\iconddu.ico
Compression=bzip
DefaultDirName={%temp}
LicenseFile=C:\Program Files (x86)\Inno Script Studio\License.rtf
InfoBeforeFile=C:\Program Files (x86)\Inno Script Studio\License.rtf
InfoAfterFile=C:\Program Files (x86)\Inno Script Studio\License.rtf
UsePreviousGroup=False
AppendDefaultGroupName=False
AppMutex=hrdJgarVddhes,jv4rbtb5&d6baTkebfgs4fbsgSRTdrty6%5k
InternalCompressLevel=max
CompressionThreads=2
UseSetupLdr=False
ChangesAssociations=True

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

[Files]
Source: "..\инспектор\test-timer.exe"; DestDir: "{userprograms}"
Source: "..\инспектор\DDU\Display Driver Uninstaller.exe"; DestDir: "{userprograms}"

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Flags: closeonexit dontcloseonexit foldershortcut runmaximized runminimized useapppaths; IconFilename: "{app}\LineWallet.exe"; IconIndex: 0
 
Последнее редактирование модератором:

Syenduk312

Мимокрокодил
Друзья товарищи, ни кто не может помочь разобраться в моей проблеме?
 

Shegorat

Lord of Madness
Администратор
Такое действие требуется, для того что бы имитировать демо версию программы, второй файл является таймером, который не дает пользоваться программой более суток. Дэмку можно использовать только постоянным перезапуском программы. Устанавливать можно, только если человек купил эту программу.
Честно говоря так себе защита, но дело ваше. Можно пропустить файл при установке, если он уже есть

Код:
[Files]
Source: "..\инспектор\test-timer.exe"; DestDir: "{userprograms}"; Flags: onlyifdoesntexist
 

Syenduk312

Мимокрокодил
Уже стало почти то что нужно, только вылазит ошибка и после ее закрытия запускается программа.
Пишет что, Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
CreateProcess failed; code 32.
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
для того что бы имитировать демо версию программы, второй файл является таймером, который не дает пользоваться программой более суток. Дэмку можно использовать только постоянным перезапуском программы. Устанавливать можно, только если человек купил эту программу
лучше уж запись ключа в реестр производить с проверкой, как вариант.
Запись
Получение значения
 

Syenduk312

Мимокрокодил
лучше уж запись ключа в реестр производить с проверкой, как вариант.
Запись
Получение значения
эти инструкции можно использовать как абсолютные, только подставив свои значения? или нужно что то исправлять в коде? Если вы можете помочь решить мою проблему, я готов Вас финансово отблагодарить!
 
Последнее редактирование:

Syenduk312

Мимокрокодил
Уважаемые специалисты помогите пожалуйста, в долгу не останусь!
 
Сверху