Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите плиз с кодом. Нужно сделать некоторые вещи, но не знаю как.
1)Как заставить инсталяшку не оставлять след в установке-удалении программ
2)Встал вопрос с правами. При обновлении файла сбрасываются права на файл. Как их можно сохранить?
3) Ну и самое интересное. Нужно перед инсталляцией (обновлением) сделать бэкап файлов с сохранением прав на эти файлы.

Код: Выделить весь код
[Setup]
AppName=Обновление для программы заказа продукции фирмы ЗАО"Арнебия"
AppVerName=Обновление для программы заказа продукции фирмы ЗАО"Арнебия" ver. 0.1
AppPublisher=Arnebia Inc
AppPublisherURL=http://www.arnebia.ru/
AppSupportURL=http://www.arnebia.ru/
AppUpdatesURL=http://www.arnebia.ru/
DefaultDirName={reg:HKLM\SOFTWARE\Arnebia,AppPath|{pf}\Arnebia\ArnebiaProduct}
DisableDirPage=yes
DefaultGroupName=Arnebia
OutputDir=C:\test progr
OutputBaseFilename=setup
SetupIconFile=C:\test progr\ArnebiaProduct\ArnebiaDoc.ico
Compression=lzma
SolidCompression=yes

[Dirs]
Name: {app}\img

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



[Icons]
Name: {group}\; Filename: {app}\ArnebiaDoc.ico; IconFilename: {app}\ArnebiaDoc.ico; Flags: runminimized
[Files]
Source: ..\..\..\test progr\ArnebiaProduct\img\img_installer\AP_Setup.jpg; DestDir: {app}\img\img_installer
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\ArnebiaDoc.ico; DestDir: {app}
Source: ..\..\..\test progr\ArnebiaProduct\client.xml; DestDir: {app}
Source: ..\..\..\test progr\ArnebiaProduct\data.mdb; DestDir: {app}

[Code_]
procedure MyAfterInstall();
begin
  MsgBox('Just installed ArnebiaProduct.exe as ' + CurrentFileName + '.', mbInformation, MB_OK);
end;



var
UpDate:string;

function GetInstallPath( AppID: String ): String;
var
Path: String;
    begin
    Path:= '';
    RegQueryStringValue(HKLM, 'SOFTWARE\Arnebia', 'AppPath', Path);
    Result:= Path;
    end;

function InitializeSetup(): Boolean;
var
Version,s:string;
    begin
    Result:=True;
    UpDate:='2.0.0.7';
// Проверка через реестр
    if not RegValueExists(HKLM, 'SOFTWARE\Arnebia', 'AppPath') then
        begin
        s:='Программа не установлена.' #13#13 'Дальнейшая работа невозможна.';
        MsgBox(s, mbError, mb_Ok);
        Result:=False;
        end else
// Проверка присутствия файла в папке с установленной программой
          begin
          If (FileSearch('ArnebiaProduct.exe', ExpandConstant('{code:GetInstallPath}'))='') then
              begin
              s:='Извините, в директории '+ExpandConstant('{code:GetInstallPath}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь.';
              MsgBox(s, mbError, mb_Ok);
              Result:= False;
              end else
 //                 MsgBox('Версия:'+ Version, mberror, mb_Ok)
 begin
                    if Version < UpDate then //сравниваем
                        begin
                        RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Arnebia', 'AppVers', Version);
                        Result:=true;
                        end else begin
                        MsgBox('Обновление на данную версию не устанавливается.', mberror, mb_Ok);
                        Result:=false;
                        end;
                    end;
                 end;
          end;



	
procedure DeinitializeSetup();
 begin
     RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Arnebia', 'AppVers', UpDate);
 end;
Заранее очень благодарен за помощь. А то на работе трясут... сроки, а я застрял на этих моментах.pi

Последний раз редактировалось Alfiks, 13-08-2009 в 10:37. Причина: проблема с кодировкой


Отправлено: 10:34, 13-08-2009 | #1277