Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > Программа для создания инсталляторов


Автор: WolfAlone 30.4.2012, 21:35
Доброго времени суток! Пытаюсь найти программу, для создания инсталляторов. Ключевой особенностью этой программы должен быть функционал, позволяющий извлечь из реестра путь, что бы предложить его пользователю как путь установки по умолчанию. Основная проблема заключается в том, что путь в реестре прописан не в "чистом" виде, а в виде как в примере ниже.

Пример:
Код

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.csx\shell\open\command]
@="\"D:\\Games\\CS\\hl.exe\" \"%1\""


Дополнительными преимуществами программы будут:
1. Бесплатность
2. Минимальный размер инсталляционного модуля.

Пробовал следующий софт:
  • Nullsoft Install System
  • Inno Setup

В Inno не нашел функционала для извлечения подобного пути из реестра вообще (получилось взять только "чистый" путь), а с NSIS что-то у меня совсем ничего не получилось...

Подскажите пожалуйста программу, способную справиться с этой задачей и/или пример для NSIS который мог бы извлечь подобный путь и использовать его в качестве пути установки по умолчанию.

Благодарю за внимание.

Автор: Akella 3.5.2012, 09:06
Не совсем понимаю о ченм именно речь. Что за чистый путь?
У Inno есть паскаль-скрипты, например:

Код

function GetKvxPathFromRegistry(): string;
Var
  KVX2008_PATH: string;
begin
  KVX2008_PATH := '';

  If RegKeyExists(HKCU, 'Software\Make It Team') Then Begin
    RegQueryStringValue(HKCU, 'Software\Make It Team', 'KVX2008_PATH', KVX2008_PATH);

  end;//If RegKeyExists(HKLM, 'Software\Make It Team') Then Begin

  if KVX2008_PATH <> '' then
    result := KVX2008_PATH
  else
    result := ''
end;

procedure InitializeWizard();
var
  newInstallFolder: String;
begin
  newInstallFolder := GetKvxPathFromRegistry();

  if newInstallFolder = '' then
    begin
      MsgBox('Установщик не смог определить, где установлена программа "Kvartal Pro". Установите "Kvartal Pro" и запустите её как минимум 1 раз, а затем закройте', mbInformation, MB_OK);
      WizardForm.Close;
    end;



  if Length(newInstallFolder) > 2 then
  begin
    if Copy(newInstallFolder, 1, 1) = '"' then
      newInstallFolder := Copy(newInstallFolder, 2, Length(newInstallFolder) - 2)
    if Length(newInstallFolder) > 1 then
      WizardForm.DirEdit.Text := newInstallFolder;
  end;
end;


Добавлено через 2 минуты и 45 секунд
Цитата(WolfAlone @  30.4.2012,  21:35 Найти цитируемый пост)
 предложить его пользователю как путь установки по умолчанию.


Может лучше без реестра?

user posted image

Автор: WolfAlone 3.5.2012, 12:31
Akella, спасибо большое, попробую разобраться!

Цитата(Akella @  3.5.2012,  09:06 Найти цитируемый пост)
Может лучше без реестра?

Уже пробовал, но к сожалению, 70% конечных пользователей плохо понимают, что такое "обновление" ("дополнение") и как его правильно установить (проще говоря, по какой-то причине не могут правильно выбрать каталог для установки). А "прямого" пути в реестре к сожалению нет, есть только путь к EXE'шнику для связи расширения с программой, откуда собственно этот путь и нужно извлечь. По этому, мне видиться только 1 выход из этой проблемы - правильно указывать путь установки "по дефолту".

Добавлено через 7 минут и 43 секунды
Цитата(Akella @  3.5.2012,  09:06 Найти цитируемый пост)
Не совсем понимаю о ченм именно речь. Что за чистый путь?

"Чистый" путь, это когда автор программы (инсталлятора) предусматривает в реестре такой параметр (строку/значение/путь), по которому можно определить, где именно установлена программа (каталог/папка).

Например, "C:\Program Files (x86)\My Program". В моём же случае, мне приходиться извлекать путь до программы из ветки реестра которая отвечает за ассоциацию расширения с EXE'шником.

Автор: Akella 3.5.2012, 22:00
Цитата
HKEY_CLASSES_ROOT

Не знаю, даст ли винда простому пользователю (твоей программе) без поднятия прав до привилегий админа доступ к этой ветке реестра?

Добавлено через 51 секунду
Пробуй запускать инсталлятор с поднятием привилегий.

Автор: Poseidon 23.5.2012, 09:40
Цитата(WolfAlone @  3.5.2012,  12:31 Найти цитируемый пост)
к сожалению, 70% конечных пользователей плохо понимают, что такое "обновление" ("дополнение") и как его правильно установить (проще говоря, по какой-то причине не могут правильно выбрать каталог для установки).
Если ты обновляешь свою программу, то Inno знает к ней путь, если ты не менял AppId. Все установится в ту папку, куда была установлена программа первоначально.

Автор: WolfAlone 26.7.2012, 00:32
Poseidon, если бы это была моя программа, я бы позаботился об автоматическом прописывании текущего пути в реестр, для возможности последующих обновлений, без лишних проблем. Но, программа к сожалению, не моя...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)