New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] 32 and 64 bit installer #476
[WIP] 32 and 64 bit installer #476
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems to be an awful lot of duplicate code. i think would be much better to have a single script (both build-nsi.sh
and pd.nsi
) that take parameters to be instrumented for 32bit or 64bit. then small wrapper scripts to call the generic ones with the proper parameters.
also i don't understand why you changed the install dir to |
@danomatika and @umlaeute These two files needs Pure-Data-32 / Pure-Data-64 ifs.
I can't handle these C / Tcl. Help needed! :) |
This can be changed but it was on purpose to make it totally clear. |
on the C-side, the fix is trivial. in the Tcl/Tk side, i'm not entirely sure, whether we should change it at all.
why? |
I rather agree with @umlaeute. although some programs do this (e.g. REAPER (x64)), I don't think it's necessary. |
Ok, no trouble at all with that. :) |
This is Ok if possible with the installer but what about the Zip app? You already did the magic detection with Deken, I guess this detection is late? Idea: Now that we have |
This is Ok if possible with the installer but what about the Zip app?
just use a different default (in the ZIP-file).
- one registry root for the 32bit installation
- another registry root for the 64bit installation
- yet another registry root for all ZIP "installations".
if the user want to keep their ZIP-installations in different config
spaces, they will have to to tweak manually (just like the users who
want to have Pd-0.43 and Pd-0.49 co-exist but with different preferences).
You already did the magic detection with Deken, I guess this detection is late?
yes.
Idea: Now that we have `pref file` couldn't we not use at all the 'windows registry' exept for file association?
heresy. (if you don't want windows, why do you use it?)
apart from that: what will this buy us? you are basically exchanging a
file on a virtual filesystem with a file on a real filesystem.
the only advantage would be, that the preference file could be stored
alongside the pd.exe (e.g. in the same directory).
however, not every user of %ProgramFiles%\Pd\bin\pd.exe can be assumed
to have write access to %ProgramFiles%\Pd\.
which prevents these users from saving their preferences.
finally: i think it is entirely possible to create a bat/cmd/.ps1 script
that starts Pd with `-noprefs -prefsfile my64bit.prefs`
|
How you do the "registry root for all ZIP "installations"?
? |
use the default registry root for ZIP "installations".
"put a single file containing the registry root into the tcl/-folder. this file could be generated by the installer-script; or missing." |
I think I got it. Some txt with just:
or
? I like it. :) |
I think the Txt thing resolves everything. :) |
yep, something like this. i'd like to hear the opinion of others on this though (@danomatika :-)) |
Ok, I'll try to make a nicer nsi script :). |
@umlaeute I made the changes that you requested, can you review? The thing now goes with |
Something went wrong when trying to do some little fix. I'll do another PR because I cant fix this one any more. But this one works with |
?? anyhow, while doing a new PR please also get rid of the |
here's another point via
so changing the installation-path is a regression. |
msw/pd.nsi
Outdated
; | ||
; removed as of 0.49 to prevent 32/64 installer clashing. No negative side effects were observed. | ||
; | ||
; !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\pd.exe" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@reduzent what was the original reason to add the PRODUCT_DIR_REGKEY
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most likely it there was no particular reason, but it got there because it was in the original template that I edited
there's no such dir. |
msw/pd.nsi
Outdated
; removed as of 0.49 to prevent 32/64 installer clashing. No negative side effects were observed. | ||
; | ||
; | ||
; InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looking up the NSIS Documentation, I think the usage of this is to remember the installation directory across re-installs. As such, it seems clear that their are no immediate side-effects visible when doing a single installation. The change will only become apparent in consecutive use of the installer.
As such, I guess it should stay in (probably with a explanatory comment why it should stay)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If that is present you get the wrong default installation dir for the parallel 2nd installation something like: c:\program files\pd\bin. I tested it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i guess, that's because the InstallDirRegKey
must be different for 32bit and 64bit installations
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure how to play with these 4 that were removed:
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\pd.exe"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\pd.exe"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
may be:
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "${ARCHI}"
?
ah indeed. static code analysis only gets you so far, if you don't know the eco-system well. |
…pure-data into windows32and64installer # Conflicts: # msw/build-nsi.sh # msw/pd.nsi
Ok, I have tested and the only known bug is that if you install first the 32 and then the 64, if 64 gets uninstalled the 32 loses the file association. Not much a big problem as you can fix it with "open with" from the explorer. @umlaeute can you review? This only fixes the 32/64 installer. Work must be done on the C/tcl side so that the 32 app don't share the registry with the 64 app. The installer is ready. |
This allows to have 32 and 64 bit Pd installed on the same system.
It creates different:
Some work must be done outside of the installer so that both apps don't share the same 'registry' but all that can be done with the installer's scripts is done in this PR. usage:
:) |
Looks good to me. |
i've updated the |
"Pd-32bit" looks a bit... LATER: think of getting rid of the ARCHI when it's not needed (e.g. on Win/32bit we can only ever have 32bit applications)
fdf39d7 is running nicely. |
a1953e2
to
fdf39d7
Compare
Why did you erase the commits? they were almost going. :) I got that part but I'm starting to fell asleep. will hang out 1 hour more or less :) |
Oops. Can you undo this merge. Is was included on #481 |
Sorry for the noise |
This allows to have the 32bit and 64bit Pd installed on the same system without clashing.
It does:
Tested and both installations can coexist with no trouble but more work on
src/s_file.c
andtcl/pd_guiprefs.tcl
needs to be done so that each Pd has its own 'windows registry' settings.