-
Notifications
You must be signed in to change notification settings - Fork 36.3k
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
Update for the Windows Installer #2128
Conversation
Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/233b122177528f1e6758890b77ba93e0b114a3c6 for binaries and test log. |
!define VERSION 0.7.99 | ||
!define PRODUCT_VERSION 0.7.99.0 |
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 change would create another place that needs to be edited by hand for official releases, I'm not sure if core devs ACK this one.
Perhaps you could mention in https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.txt#L6 that there are then 2 lines, which need to be edited.
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.
!define PRODUCT_VERSION "${VERSION}.0" ... would save us a little typing and another potential source of bugs.
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.
Agreed. Updating now.
I like the introduction of that variable, which holds the value Edit: Can you have a look at #993 while you are working on this :)? |
SetOutPath $INSTDIR | ||
WriteUninstaller $INSTDIR\uninstall.exe | ||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application | ||
SetShellVarContext all |
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.
What is this one doing?
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.
It tells the uninstaller to uninstall the start menu items from the All Users location, not the (default) user local location.
Can you write up a test plan? Something like: Test installing on top of an old installation, and then uninstalling. Note for testers: Run regedit and look for registry keys {....???....} to verify. Test installing a new version, then installing an old version on top. Test: install as non-privileged user Test: install as admin, run as admin Test: install as admin, login as another user |
@Diapolo Yes, having user local installs would be great. However to provide that functionally the nsi install scripts are much more complicated than what we have now. Ideally the installer will only as for permissions as it needs them. (For example a user local install will not require any escalation of privileges). Unlike an all-user install, that would escalate to admin. Unfortunately, making a nsi installer that provides that sort of functional is quite hard. |
I'm not sure user-local installs are a real concern, considering that it'd be a pretty bad idea to use Bitcoin on a system where anyone else has administrative controls... |
Is it possible for the build bot to create the nsi installers? |
We have no build bot (Gitian), which handles this nsi stuff AFAIK. |
Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/44e2863c7d0d9cb3d50803d776cb97993b06860b for binaries and test log. |
Ping me here, and I'll do a gitian build of your branch. |
Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/44e2863c7d0d9cb3d50803d776cb97993b06860b for binaries and test log. |
Vista and after support %LOCALAPPDATA%, which is the non-roaming data store (on XP and prior NT-based OS, the corresponding local data is %USERPROFILE%\Local Settings\Application Data). As an example of use, this is where Google Chrome installs it's program and user data. Google doesn't care about your admin's silly "install program" policies or writing software that is Microsoft compliant, they are more than happy to install to and execute from this user-writable data store. As an aside, Bitcoin stores user data in the wrong location: To reduce exposure to "evil system admin" and make Bitcoin not break the enterprise environment, we must consider that %APPDATA% is a ROAMING profile location - when a domain controller is configured for roaming profiles (log into a different computer and your files are there too) all program data stored in this tree is replicated to the remote profile store. This creates two problems: A wise Bitcoin would use the non-roaming directory if %APPDATA%\Bitcoin is not present, or even better, migrate if it is. |
Rather than hardcoding the decision, can we ask -- as some installers do -- whether to install for (a) current user or (b) all users? |
@jgarzik I'm not sure how to do that. However this pull request is better than the broken behavior that the current installer has on some windows environments. |
@da2ce7 |
Only the Administrator will be able to make changes to the Bitcoin install files. (Install, Update, Remove) |
ACK changes conceptually. Let's get this tested, especially on multiple Windows versions. |
Rebased. |
!define VERSION 0.8.2 | ||
!define PRODUCT_VERSION "${VERSION}.0" | ||
!define COMPANY "Bitcoin project" |
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.
After looking into https://github.com/bitcoin/bitcoin/blob/master/src/qt/res/bitcoin-qt.rc I would vote for harmonizing some strings and replacing this with just Bitcoin
as we also use it in bitcoin.cpp as QApplication::setOrganizationName("Bitcoin");
.
Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/c80efe132575f2ca65479d784f18f5c6e6d478ec for binaries and test log. |
@@ -45,21 +48,21 @@ Var StartMenuGroup | |||
!insertmacro MUI_LANGUAGE English | |||
|
|||
# Installer attributes | |||
OutFile bitcoin-0.8.2-win32-setup.exe | |||
InstallDir $PROGRAMFILES\Bitcoin | |||
OutFile ${NAME}-${VERSION}-win32-setup.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.
This changes the output filename to capitalized, but there is no corresponding capitalization expected by the gitian yml.
Needs a rebase and a test plan written and tested on at least two versions of Windows (oldest we support and newest). |
Closing this pull as it has been inactive for a long time. I also don't really like requiring admin rights to install, this has always annoyed me for other software in the rare cases I had to use windows. In any case: please ping me or open a new pull request with a rebased version if anyone still wants to get this merged in some form. |
I have taken the time to try and make the windows installer a bit more sold, as it didn't work well with my windows system (where I run as a low-privileged user, and manually approve any escalation of privileges).
The main changes involve changing from the 'local user' settings to the 'local system,' and requiring admin privileges to install. (of course any user will be able to run Bitcoin without being an admin still).
Of-course this will need more testing.