hi hans,
i made a patch with code to check for a previous version of pd (but only
if this is in the same directory you want to install the new one to)
and offers the possibility to uninstall first.
cheers
g.
Hans-Christoph Steiner schrieb:
>
> Ok, that's a good start! Could you generate a patch and send it to
> me? Its not hard if you have SVN installed. I'll bet TortoiseSVN or
> other GUIs can do it. From the command line, you would do this:
>
> cd pure-data/packages/win32_inno/
> svn diff pd-inno.iss.in > alwaysoverwrite.patch
>
> But the question I have, is that going to cause any problems? Like if a
> file is removed in a new release, and you install the new version over
> the old one, will that file still stay there, left over from the old
> release?
>
> I wonder how people deal with that, perhaps there is a way to compare
> two installers, and then configure the new installer to only delete the
> files that it must.
>
> Perhaps its better to continute this on pd-dev, so others can
> participate and its in the archive.
>
> .hc
>
> On Apr 21, 2009, at 5:40 PM, Georg Werner wrote:
>
>> hi,
>>
>> i just gave it a shot ;)
>> i read the documentation and think i found the lines (in
>> pd-inno.iss.in) where the problem lies:
>>
>> 341 Source: build\bin\*.*; DestDir: {app}\bin; Flags: ignoreversion
>> confirmoverwrite recursesubdirs uninsremovereadonly
>> 342 Source: build\doc\*.*; DestDir: {app}\doc; Flags: ignoreversion
>> confirmoverwrite recursesubdirs uninsremovereadonly; Attribs: readonly
>>
>> i think the confirmoverwrite flag is causing the trouble -
>> alwaysoverwrite would be better in this case.
>>
>> same in these lines:
>> 351 Source: build\lib*.dll; DestDir: {sys}; Flags: restartreplace
>> confirmoverwrite sharedfile
>> 352 Source: build\pthread*.dll; DestDir: {sys}; Flags: restartreplace
>> confirmoverwrite sharedfile
>>
>> hope this helps
>> cheers
>> g.
>>
>>
>> Hans-Christoph Steiner schrieb:
>>> Hey,
>>> I forgot whether I mentioned this before. One thing that would
>>> improve the newbies experience using Pd-extended on Windows is to
>>> make sure that the installer works smoothly. It uses Inno Setup,
>>> which is a nice GUI program that is decently documented. Want to
>>> give that a shot?
>>> One specific complaint is that you have to uninstall Pd-extended
>>> before you can upgrade. It would be nice if it would automatically
>>> overwrite or uninstall the old copy.
>>> .hc
>>> ----------------------------------------------------------------------------
>>> Man has survived hitherto because he was too ignorant to know how to
>>> realize his wishes. Now that he can realize them, he must either
>>> change them, or perish. -William Carlos Williams
>>
>
>
>
>
>
>
>
> ----------------------------------------------------------------------------
>
>
> "It is convenient to imagine a power beyond us because that means we
> don't have to examine our own lives.", from "The Idols of
> Environmentalism", by Curtis White
>
>
>
>
Index: pd-inno.iss.in
===================================================================
--- pd-inno.iss.in (revision 11314)
+++ pd-inno.iss.in (working copy)
@@ -364,3 +364,25 @@
;Source: build\portaudio\*.*; DestDir: {app}\portaudio; Flags: ignoreversion recursesubdirs
;Source: build\src\*.*; DestDir: {app}\src; Flags: ignoreversion recursesubdirs
;Source: build\tcl\*.*; DestDir: {app}\tcl; Flags: ignoreversion recursesubdirs
+
+[Code]
+function NextButtonClick(CurPageID: Integer): Boolean;
+var
+ ResultCode: Integer;
+begin
+ case CurPageID of
+ wpReady:
+ begin
+ if(FileExists(ExpandConstant('{app}\unins000.exe'))) then begin
+ if MsgBox('Found a previous Version of Pure Data at ' + ExpandConstant('{app} ') + #13#13 'Do you want to uninstall it first? (recommended)', mbConfirmation, MB_YESNO) = idYes then begin
+ if not Exec(ExpandConstant('{app}\unins000.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then
+ MsgBox('NextButtonClick:' #13#13 'The uninstall file could not be executed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
+ end;
+ end;
+ BringToFrontAndRestore();
+ MsgBox('NextButtonClick:' #13#13 'The normal installation will now start.', mbInformation, MB_OK);
+ end;
+ end;
+
+ Result := True;
+end;