Разработка инсталляционного пакета
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Разработка инсталляционного пакета

Разработка инсталляционного пакета

Ответ
Поиск в этой теме
Непрочитано 05.09.2006, 10:43 #1
Разработка инсталляционного пакета
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 40,411

Проблема тут у меня в следующем.
Собственный инсталл разработан через InnoSetup. В процессе инсталляции пишутся пути установки в HKLM\Software, регистрируются dll и проч. Но! Пакет постоянно меняется, причем в 99% случаев это не требует перерегистрации dll (меняется меню, toolpalettes, lisp...). Соответственно хочется сделать какой-то инсталл "сервис-пака", который:
- прочитает значения указанных ключей из реестра
- если путей нет, то выдаст соответствующее предупреждение и завершит работу;
- если пути есть, то дальше по этим путям удалит файлы с указанными масками (либо именами) и поставит туда свои.
Вопрос: в чем его можно сделать (и образец, если можно)? Я понимаю, что в InnoSetup можно прикрутить delphi-образный код, но я в паскале, мягко говоря, не силен.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 7874
 
Непрочитано 05.09.2006, 12:22
#2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


1. Пользоваться последней версией InnoSetup. Сейчас это 5.1.7, и обязательно ISTools - есть для 5.1.6, будет и для 5.1.7.

Есть опция Use Previous Application Directory и др. "use previous". Приложению надо присвоить AppID, в следующий раз будет устанавливаться в то же место. Регистрацию DLL лучше включать, если они идут в обновлении. Прежний вариант кто-то мог и перерегистрировать в другое место, ошибку будет трудно найти.

Ненужные страницы (например, выбор каталога) можно отключить в опциях. Не стоит отключать информацию о том, что это за программа и чего в ней такого нового.

2. Код на Паскале гораздо проще и прозрачней, чем на LISP или VB

Например, в секцию CODE можно записать

Код:
[Выделить все]
// Ключ в реестре для программы
function ruKey(Default: String): String;
begin
  Result := 'SOFTWARE\ruCAD group\ruCAD';
end;

// Проверка наличия предыдущей установки
function IsRuCADInstalled(): Boolean;
var
 AllUsersDir : string;
begin
  Result:= RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\ruCAD group\ruCAD', 'AllUsersDir', AllUsersDir);
end;

// Пример возврата значения ключа
function GetAllUsersDir(S:string): String;
begin
  Result := '';
  RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\ruCAD group\ruCAD',
     'AllUsersDir', Result);
end;

// Как использовать проверку "уже установленности" для
// применения в диалоге
function NextButtonClick(CurPageID: Integer): Boolean;
var
  I: Integer;
begin
   Result:=True;
  { Validate certain pages before allowing the user to proceed }
  if CurPageID = wpInfoBefore then begin
	 Result:= IsRuCADInstalled;
     if not result then MsgBox('Основной комплект ruCAD не установлен!'+#13+'Отмените установку ', mbCriticalError,MB_OK);
	end;
end;
Результаты функций из CODE можно использовать в других сециях, например:

Код:
[Выделить все]
 Source: SP004\Shared\app\common\*; DestDir: {[b]code[/b]:GetAllUsersDir|''}\app\common; Components: common; Flags: recursesubdirs uninsremovereadonly touch overwritereadonly promptifolder ignoreversion replacesameversion; Permissions: "authusers-modify "; Excludes: *.bak
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 05.09.2006, 12:30
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Уважаемый ShaggyDoc! Огромное Вам спасибо. Я и не надеялся на такой развернутый ответ. Если что-то не получится, я еще пристану
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2006, 20:08
#4
Alxd

Разработчик САПР
 
Регистрация: 14.05.2004
Тюмень
Сообщений: 467
<phrase 1=


Так... между прочим... добавлю.
Можно взять nsis, он бесплатный (был вроде) и писать на нем можно очень красивые инсталлеры.
Alxd вне форума  
 
Автор темы   Непрочитано 06.09.2006, 08:06
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Это который http://www.izcity.com/lib/22052006/n...emnsis2-17.htm ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2006, 11:16
#6
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Nsis один из немногих хороших бесплатных инсталляторов. Есть свои изюминки. Но в целом он отстает от Inno Setup.

Например, там собственный скриптовый язык, который все-таки надо немного изучать. В Inno Setup - практичеки полный Pascal из Delphi. Плюс подключение DLL или приложений.

В NSIS отсутствует диалоговый дизайнер инсталляции. Были сторонние, но не обновлялись после 2002 года. В InnoSetup тоже нет дизайнера, но параллельно развивается ISTool, значительно облегчающая установку многочисленных опций.

В InnoSetup имеется возможность управления permissions на файлы. Это ведь проблема - при установке администратором он будет владельцем файлов. А надо дать возможность их изменять другим пользователям.

Наконец сам InnoSetup поставляется в исходниках. Не столь важны исходники компилятора, сколь прилагаемые к нему библиотеки и компоненты. А там имеются очень качественно сделанные функции, доступные только в дорогих коммерческих библиотеках.

"Красивость" инсталляции - дело вкуса. Лучшая красота - стандартность и привычность интерфейса. В общем-то это делают все инсталляторы примерно одинаково.

И, конечно, качество инсталляции больше зависит от автора - неважно, чем сделано. Но "шибко умный" инсталлятор может провоцировать на необдуманные действия. Например, один из крутых инсталляторов включает в комплект и системные DLL. Естественно те, которые есть на машине у автора. И у пользователя они будут заменены без спроса. Вот из-за этого и появляется необходимость переустанавливать Windows.
ShaggyDoc вне форума  
 
Непрочитано 21.02.2008, 21:55
#7
CemKey


 
Регистрация: 21.02.2008
Сообщений: 1


Я в этом полный нуб, но мне надо всего лиш сделать инсаллятор, который будет брать путь для инсалляции в реестре из ключа, если он есть, а если нет, то сообщать, что мол извините не выйдет и заменять существующие папки и файлы. И пожалуйста напишите как это будет выглядеть целиком.
CemKey вне форума  
 
Автор темы   Непрочитано 21.02.2008, 22:00
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Помимо официального сайта:
http://forum.ru-board.com/topic.cgi?...1&topic=4801#1
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235
http://forum.ru-board.com/topic.cgi?forum=5&topic=24767
Это, конечно, только для InnoSetup. Для других install-maker'ов надо искать спец.форумы
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2008, 15:44
#9
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Подскажите Inno Setup возможно использовать для интерпритированных языков как LISP, или только для компилированных?
Все равно придется добавлять вручную в ACade в Load Aplication, для подгрузки VLX, FAS, или lsp, тогда смысл в
инсталяторе, или я ошибаюсь?

Последний раз редактировалось Holon, 04.03.2008 в 15:53.
Holon вне форума  
 
Непрочитано 04.03.2008, 16:59
#10
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Все немного разобрался, классная штука, очень удобно оформлять скажем VLX проекты,
вот еслибы эта штука прописывала пути доступа в ACade, и загружала файлы в Load Aplication вообще цены ей небыло-бы.
Holon вне форума  
 
Непрочитано 04.03.2008, 19:44
#11
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Holon Посмотреть сообщение
Все немного разобрался, классная штука, очень удобно оформлять скажем VLX проекты,
вот еслибы эта штука прописывала пути доступа в ACade, и загружала файлы в Load Aplication вообще цены ей небыло-бы.
Ничего не мешает это сделать. Надо сделать выбор одного из установленных AutoCAD, а потом в реестр этого AutoCAD дописать вс, что надо.

Но есть нюансы:

1. Это будет только для HKLM того пользователя, который устанавливает программу.

2. Надо еще сделать выбор профиля, в который что-то дописывает.

InnoSetup позволяет выполнить все эти действия.

Чтобы реализовать универсальность делают или "пост-инсталляторы" для конкретного пользователя или выяснение деталей уже в своей программе.
ShaggyDoc вне форума  
 
Непрочитано 04.03.2008, 21:18
#12
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


Ну, у меня схема инсталла через InnoSetup была сделана максимально приближенная к Express Tools -- установка под администратором, а в Автокад прописывается команда XXXload и XXXunload, устанавливающая/убирающая панели, добавляющая команды и прочее.
Завтра могу сбросить пример .iss.
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 05.03.2008, 14:39
#13
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Да хорошо бы пример, заранее благодарен.
Holon вне форума  
 
Непрочитано 05.03.2008, 16:31
#14
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


Кидаю прямо сюда, чтобы с вложениями не возиться.
[UninstallRun] устарела и закомментирована. Ошибки юности...
Как видим, инсталл цепляется за acad2005doc.lsp, чтобы прописать команды установки, и при деинсталле находит строку, которая предположительно уникальна, удаляя все строки, ее содержащие. Коряво. Надо бы переделать.

Код:
[Выделить все]
[FONT="Courier New"][Setup]
AppName=Alto 1.1 for AutoCAD
AppVerName=Alto v.1.1.3 ALPHA
AppPublisher=Alexander Bausk
DefaultDirName={pf}\NERL Alto
Compression=lzma
SolidCompression=true
WizardImageFile=settings.bmp
PrivilegesRequired=admin
ShowLanguageDialog=yes
AppCopyright=© Alexander Bausk
DisableProgramGroupPage=true

[Files]
Source: Alto2005.dvb; DestDir: {app}
Source: AltoTemplate.dwt; DestDir: {app}
Source: AltoLoader.lsp; DestDir: {app}; AfterInstall: MyAfterInstall
Source: AltoCommands.lsp; DestDir: {app}
Source: AltoAutoExec.lsp; DestDir: {app}
Source: Drawing2.lin; DestDir: {app}
Source: *.bmp; DestDir: {app}
Source: *.mns; DestDir: {app}

Source: AltoMonochrome.ctb; DestDir: {app}\FileCopies
;Source: AltoMonochrome.ctb; DestDir: {reg:HKCU\Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\{reg:HKCU\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles|<<Unnamed Profile>>}\General\PrinterStyleSheetDir}; flags: onlyifdoesntexist uninsneveruninstall
Source: mipGost.shx; DestDir: {reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|{pf}\AutoCAD 2005}\fonts; flags: onlyifdoesntexist uninsneveruninstall
Source: wwcade.shx; DestDir: {reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|{pf}\AutoCAD 2005}\fonts; flags: onlyifdoesntexist uninsneveruninstall

Source: styles\*.*; DestDir: {app}\styles
Source: styles\AltoDefault\*.*; DestDir: {app}\styles\AltoDefault
Source: support\*.ini; DestDir: {app}\support
Source: support\*.pat; DestDir: {app}\support
Source: support\*.lin; DestDir: {app}\support
Source: support\*.shx; DestDir: {app}\support
Source: support\*.dwg; DestDir: {app}\support
Source: library\*.*; DestDir: {app}\library
Source: library\Выноски\*.*; DestDir: {app}\library\Выноски
Source: library\Координационные оси\*.*; DestDir: {app}\library\Координационные оси
Source: library\Маркеры\*.*; DestDir: {app}\library\Маркеры
Source: library\Металлопрокат\*.*; DestDir: {app}\library\Металлопрокат
Source: library\Надписи\*.*; DestDir: {app}\library\Надписи
Source: library\Прочее\*.*; DestDir: {app}\library\Прочее
Source: library\Сечения\*.*; DestDir: {app}\library\Сечения
Source: library\Форматы\*.*; DestDir: {app}\library\Форматы
Source: bitmaps\*.*; DestDir: {app}\bitmaps

;Source: SSubTmr6.dll; DestDir: {sys}; flags: restartreplace sharedfile regserver
;Source: vbalODCL6.ocx; DestDir: {sys}; Flags: restartreplace sharedfile regserver

Source: .Binaries\mscomctl.inf; DestDir: {sys}
Source: .Binaries\mscomctl.ocx; DestDir: {sys}; Flags: restartreplace sharedfile regserver
Source: .Binaries\BtnPlus1.ocx; DestDir: {sys}; Flags: restartreplace sharedfile regserver
Source: .Binaries\FraPlus1.ocx; DestDir: {sys}; Flags: restartreplace sharedfile regserver
Source: .Binaries\ScBrPls1.ocx; DestDir: {sys}; Flags: restartreplace sharedfile regserver
;Source: .Binaries\VBE6.DLL; DestDir: {cf}\Microsoft Shared\VBA\VBA6; Flags: restartreplace sharedfile regserver
;Source: .Binaries\VBE6EXT.OLB; DestDir: {cf}\Microsoft Shared\VBA\VBA6; Flags: restartreplace sharedfile regserver

;Source: Alto10MultiUserPatch.exe; DestDir: {app}
;Source: Uninstaller1.exe; DestDir: {reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|{pf}\AutoCAD 2005}\support; flags: onlyifdoesntexist; AfterInstall: MyAfterInstall

[Run]



[Registry]

;Root: HKCU; Subkey: Software\NERL Alto; ValueType: string; ValueName: ProfilePatched; ValueData: 1\

Root: HKLM; Subkey: Software\NERL Alto; ValueType: string; ValueName: SupportFolder; ValueData: {app}\support\
Root: HKLM; Subkey: Software\NERL Alto; ValueType: string; ValueName: MainFolder; ValueData: {app}\
Root: HKLM; Subkey: Software\NERL Alto; ValueType: string; ValueName: Version; ValueData: "1.0.0 alpha"
Root: HKLM; Subkey: Software\NERL Alto; ValueType: string; ValueName: MenuName; ValueData: "Alto"

;Root: HKCU; Subkey: Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\{reg:HKCU\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles,|Bausk1}\General; ValueType: string; ValueName: ACAD; ValueData: "{olddata}{app};"
;Root: HKCU; Subkey: Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\{reg:HKCU\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles,|Bausk1}\General; ValueType: string; ValueName: ACAD; ValueData: "{olddata}{app}\support;"

[Cоde]

function InitializeSetup(): Boolean;

begin
  if RegKeyExists(HKEY_CURRENT_USER, 'Software\Autodesk\AutoCAD\R16.1\ACAD-301:409') = false then begin
    // The key exists
  MsgBox('AutoCAD R16.1 was not found on your system. Setup will be aborted.', mbCriticalError, MB_OK);
  Result := false;
  end;
  if RegKeyExists(HKEY_CURRENT_USER, 'Software\Autodesk\AutoCAD\R16.1\ACAD-301:409') then begin
  Result := true;
  end;
end;

procedure MyAfterInstall();
var a: Boolean;
var b: String;
var c, source, d: String;
var int: Integer;
var cc1: Integer;
begin

b := ExpandConstant('{reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|CADA}');
a := LoadStringFromFile(b + '\support\acad2005doc.lsp', source);
c := ExpandConstant('{app}');
d := ExpandConstant('{sys}');


int := pos('AltoLoader.lsp', source);
if int = 0 then begin

  StringChange(c, '\', '/');
  a := SaveStringToFile(b + '\support\acad2005doc.lsp', '(load "' + c + '/AltoLoader.lsp") ;ID100008ALTOSTRING' + Chr(10), True);
  a := SaveStringToFile(b + '\support\acad2005doc.lsp', '(princ) ;ID100008ALTOSTRING' + Chr(10), True);
  end;
end;

function InitializeUninstall(): Boolean;
var a: Boolean;
var b: String;
var c, source, d: String;
var int, i: Integer;
var cc1: Integer;
var sAcadDocArray: TArrayOfString;

begin
b := ExpandConstant('{reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|CADA}');
a := LoadStringFromFile(b + '\support\acad2005.lsp', source);
c := ExpandConstant('{app}');
d := ExpandConstant('{sys}');
int := pos('AltoLoader.lsp', source);


if int = 0 then begin
    a := LoadStringsFromFile(b + '\support\acad2005doc.lsp', sAcadDocArray);
    for i := 0 to GetArrayLength(sAcadDocArray) - 1 do
      begin
        if Pos('ID100008ALTOSTRING', sAcadDocArray[i]) <> 0 then begin
          sAcadDocArray[i] := '';
          end;
      end;
       
    a := SaveStringsToFile(b + '\support\acad2005doc.lsp', sAcadDocArray, False);
    end;
    Result := true;
end;

[UninstallRun]
;Filename: {reg:HKLM\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409,AcadLocation|{pf}\AutoCAD 2005}\support\uninstaller1.exe
[/FONT]
Вложения
Тип файла: rar bausk.rar (2.9 Кб, 73 просмотров)
__________________
Reshaping the STEM field

Последний раз редактировалось Кулик Алексей aka kpblc, 05.03.2008 в 20:55. Причина: Достаточно тэга [code]. При копировании текста внутренний тэг Code надо перебить
Александр Бауск вне форума  
 
Непрочитано 05.03.2008, 21:44
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


[FONT=Courier New]Не стоит в инсталляцию загонять константы наподобие[/FONT]

Код:
[Выделить все]
 
Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\
acad2005doc.lsp
Это привязка к конкретной и единственной версии Автокада. Выбор надо делать в самом инсталляторе. На худой конец вынести подобные константы в INI-файл самой инсталляции.
ShaggyDoc вне форума  
 
Непрочитано 05.03.2008, 22:16
#16
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


Эммм... Он собственно на одну только версию и может ставиться... :=)
А вообще, конечно, да.
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 02.02.2009, 18:21
#17
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Во время инсталяции "USER" выбирает папку для хранения файлов, как
путь к этой папке можно сохранить в "HKEY_CURRENT_USER............", чтобы потом можнно было
получить его с помощью
Код:
[Выделить все]
(vl-registry-read "HKEY_CURRENT_USER
, и использовать в коде
для своих нужд?

Последний раз редактировалось Holon, 02.02.2009 в 18:33.
Holon вне форума  
 
Непрочитано 02.02.2009, 22:13
#18
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


В InnoSetup в скрипте есть секция [Registry]
Туда и включается всё, что нужно записать в реестр. Примеры есть в #14. Там только HKCU заремлены.

Писать надо не просто в HKCU, а в ветку своей программы. И учитывать, что это будет HKCU того пользователя, который запустил инсталляцию.
ShaggyDoc вне форума  
 
Непрочитано 03.02.2009, 09:14
#19
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Заведомо известную информацию я могу записать и без инсталяционного пакета,
дело в другом при запуске инсталяционного файла пользователь указывает место установки,
к примеру вместо C:\Program Files\........ по умолчанию, пользователь указывает
другое место C:\MyProg\........ вот этот путь мне и интересен, попросту говоря, чтобы
инсталяционный пакет помог собрать информацию о местонахождении (локализации)
файлов. А это:
Код:
[Выделить все]
[Registry]
Root: HKCU; Subkey: Software\MyProg Test1; ValueType: string; ValueName: ProfilePatched; ValueData: /1
дает записать только заведомо известную мне информацию. Может быть в ValueData: можно вставить какую-нибудь функцию, которая возвращала бы реальный Patch
установки?

Последний раз редактировалось Holon, 03.02.2009 в 09:29.
Holon вне форума  
 
Автор темы   Непрочитано 03.02.2009, 09:36
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


А {app} (ну или что-то такого типа) не работает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2009, 09:52
#21
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Алексей ты как всегда прав, большое спасибо!
Код:
[Выделить все]
[Registry]
Root: HKCU; Subkey: Software\MyProg Test1; ValueType: string; ValueName: ProfilePatched; ValueData: {app}
Holon вне форума  
 
Непрочитано 03.02.2009, 11:13
#22
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Так надо просто F1 жать. В InnoSetup море подобных обозначений.
ShaggyDoc вне форума  
 
Непрочитано 03.02.2009, 14:20
#23
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


И код на обгрызке Паскаля можно вставлять. Делая полноценный инсталлятор под Автокад 2005, я без пользовательского кода обойтись не смог.
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 03.02.2009, 16:58
#24
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Да у них очень хороши "Хелп" вот примеры кода оттуда,
Код:
[Выделить все]
[Registry]
Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
всем большое спасибо.
Holon вне форума  
 
Непрочитано 05.02.2009, 23:27
#25
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Ничего не мешает это сделать. Надо сделать выбор одного из установленных AutoCAD, а потом в реестр этого AutoCAD дописать вс, что надо.

Но есть нюансы:

1. Это будет только для HKLM того пользователя, который устанавливает программу.

2. Надо еще сделать выбор профиля, в который что-то дописывает.

InnoSetup позволяет выполнить все эти действия.

Чтобы реализовать универсальность делают или "пост-инсталляторы" для конкретного пользователя или выяснение деталей уже в своей программе.
Если можно пример [code] выбора из нескольких АКадов пользователем во время инсталяции, и выбор профиля и возможной записи POP для выбранного профиля, я думаю многим это будет интересно, заранее благодарен всем откликнувшимся.
Holon вне форума  
 
Непрочитано 07.02.2009, 23:03
#26
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Вот здесь примеры от AfraLisp, хоть и не на родном языке но можно поучится.
Holon вне форума  
 
Автор темы   Непрочитано 07.02.2009, 23:21
#27
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Holon, там используется AcadInst. Закрытый продукт со всеми вытекающими.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.02.2009, 23:52
#28
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Дак там было написано
Don't worry, they are both absolutely FREE.
или я наивный чего-то непомимаю, да и выбора особого нет,
разве,что Паскаль начинать учить :-)
Holon вне форума  
 
Автор темы   Непрочитано 08.02.2009, 00:38
#29
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


К сожалению, я бы задумался о Pascal'е (либо учить, либо заказывать разработку на стороне. Кстати, на ru-board.com есть несколько тем как раз по InnoSetup - масса интересностей есть. Можно попросить сделать скрипт, но результат, как всегда, не очень гарантирован). AcadInstall достаточно долго "динамил" тех, кто работал под 2006 - не было поддержки CUI и рабочих пространств.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Разработка инсталляционного пакета