Fixed the installer script and made the autostart registry based.
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@14 1a98c847-1fd6-4fd8-948a-caf3550aa51b
This commit is contained in:
parent
661f878002
commit
0cc05617d1
6 changed files with 61 additions and 69 deletions
|
@ -2,5 +2,6 @@ Changes after 0.1.5:
|
||||||
--------------------
|
--------------------
|
||||||
+ Options dialog layout changed - added the UI options panel
|
+ Options dialog layout changed - added the UI options panel
|
||||||
+ Minimize to tray feature
|
+ Minimize to tray feature
|
||||||
+ Startup on system boot feature (adds a shortcut to the Startup folder)
|
+ Startup on system boot feature
|
||||||
+ Ask before closing
|
+ Ask before closing
|
||||||
|
+ NSIS installer
|
|
@ -37,7 +37,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <shlobj.h>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#define BOUNDSCHECK 1
|
#define BOUNDSCHECK 1
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
43
setup.nsi
43
setup.nsi
|
@ -53,7 +53,7 @@ VIAddVersionKey CompanyWebsite "${URL}"
|
||||||
VIAddVersionKey FileVersion "${VERSION}"
|
VIAddVersionKey FileVersion "${VERSION}"
|
||||||
VIAddVersionKey FileDescription ""
|
VIAddVersionKey FileDescription ""
|
||||||
VIAddVersionKey LegalCopyright ""
|
VIAddVersionKey LegalCopyright ""
|
||||||
InstallDirRegKey HKLM "${REGKEY}" Path
|
InstallDirRegKey HKCU "${REGKEY}" Path
|
||||||
ShowUninstDetails show
|
ShowUninstDetails show
|
||||||
|
|
||||||
# Installer sections
|
# Installer sections
|
||||||
|
@ -63,32 +63,33 @@ Section -Main SEC0000
|
||||||
File bitcoin.exe
|
File bitcoin.exe
|
||||||
File libeay32.dll
|
File libeay32.dll
|
||||||
File mingwm10.dll
|
File mingwm10.dll
|
||||||
WriteRegStr HKLM "${REGKEY}\Components" Main 1
|
WriteRegStr HKCU "${REGKEY}\Components" Main 1
|
||||||
|
WriteRegStr HKCU SOFTWARE\Microsoft\Windows\CurrentVersion\Run Bitcoin "$INSTDIR\bitcoin.exe /min"
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section -post SEC0001
|
Section -post SEC0001
|
||||||
WriteRegStr HKLM "${REGKEY}" Path $INSTDIR
|
WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
WriteUninstaller $INSTDIR\uninstall.exe
|
WriteUninstaller $INSTDIR\uninstall.exe
|
||||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
SetOutPath $SMPROGRAMS\$StartMenuGroup
|
CreateDirectory $SMPROGRAMS\$StartMenuGroup
|
||||||
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk" $INSTDIR\bitcoin.exe
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk" $INSTDIR\bitcoin.exe
|
||||||
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk" $INSTDIR\uninstall.exe
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk" $INSTDIR\uninstall.exe
|
||||||
!insertmacro MUI_STARTMENU_WRITE_END
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe
|
||||||
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
|
||||||
WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
|
||||||
WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
# Macro for selecting uninstaller sections
|
# Macro for selecting uninstaller sections
|
||||||
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
|
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
|
||||||
Push $R0
|
Push $R0
|
||||||
ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}"
|
ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
|
||||||
StrCmp $R0 1 0 next${UNSECTION_ID}
|
StrCmp $R0 1 0 next${UNSECTION_ID}
|
||||||
!insertmacro SelectSection "${UNSECTION_ID}"
|
!insertmacro SelectSection "${UNSECTION_ID}"
|
||||||
GoTo done${UNSECTION_ID}
|
GoTo done${UNSECTION_ID}
|
||||||
|
@ -103,18 +104,20 @@ Section /o -un.Main UNSEC0000
|
||||||
Delete /REBOOTOK $INSTDIR\mingwm10.dll
|
Delete /REBOOTOK $INSTDIR\mingwm10.dll
|
||||||
Delete /REBOOTOK $INSTDIR\libeay32.dll
|
Delete /REBOOTOK $INSTDIR\libeay32.dll
|
||||||
Delete /REBOOTOK $INSTDIR\bitcoin.exe
|
Delete /REBOOTOK $INSTDIR\bitcoin.exe
|
||||||
DeleteRegValue HKLM "${REGKEY}\Components" Main
|
DeleteRegValue HKCU "${REGKEY}\Components" Main
|
||||||
|
DeleteRegValue HKCU SOFTWARE\Microsoft\Windows\CurrentVersion\Run Bitcoin
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section -un.post UNSEC0001
|
Section -un.post UNSEC0001
|
||||||
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
|
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
|
||||||
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk"
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk"
|
||||||
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk"
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk"
|
||||||
Delete /REBOOTOK $INSTDIR\uninstall.exe
|
Delete /REBOOTOK $INSTDIR\uninstall.exe
|
||||||
DeleteRegValue HKLM "${REGKEY}" StartMenuGroup
|
Delete /REBOOTOK $INSTDIR\db.log
|
||||||
DeleteRegValue HKLM "${REGKEY}" Path
|
DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
|
||||||
DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components"
|
DeleteRegValue HKCU "${REGKEY}" Path
|
||||||
DeleteRegKey /IfEmpty HKLM "${REGKEY}"
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
|
||||||
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}"
|
||||||
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
|
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
|
||||||
RmDir /REBOOTOK $INSTDIR
|
RmDir /REBOOTOK $INSTDIR
|
||||||
Push $R0
|
Push $R0
|
||||||
|
@ -131,7 +134,7 @@ FunctionEnd
|
||||||
|
|
||||||
# Uninstaller functions
|
# Uninstaller functions
|
||||||
Function un.onInit
|
Function un.onInit
|
||||||
ReadRegStr $INSTDIR HKLM "${REGKEY}" Path
|
ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
|
||||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
|
||||||
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
|
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
73
ui.cpp
73
ui.cpp
|
@ -3016,8 +3016,9 @@ void CBitcoinTBIcon::UpdateTooltip() {
|
||||||
wxMenu *CBitcoinTBIcon::CreatePopupMenu()
|
wxMenu *CBitcoinTBIcon::CreatePopupMenu()
|
||||||
{
|
{
|
||||||
wxMenu *menu = new wxMenu;
|
wxMenu *menu = new wxMenu;
|
||||||
wxMenuItem* generateCheck = menu->AppendCheckItem(PU_GENERATE, _T("Generate Coins"));
|
|
||||||
menu->Append(PU_RESTORE, _T("Open Bitcoin"));
|
menu->Append(PU_RESTORE, _T("Open Bitcoin"));
|
||||||
|
wxMenuItem* generateCheck = menu->AppendCheckItem(PU_GENERATE, _T("Generate Coins"));
|
||||||
|
menu->InsertSeparator(2);
|
||||||
menu->Append(PU_EXIT, _T("Exit"));
|
menu->Append(PU_EXIT, _T("Exit"));
|
||||||
|
|
||||||
generateCheck->Check(fGenerateBitcoins);
|
generateCheck->Check(fGenerateBitcoins);
|
||||||
|
@ -3386,51 +3387,39 @@ void ApplyUISettings() {
|
||||||
taskBarIcon->Hide();
|
taskBarIcon->Hide();
|
||||||
|
|
||||||
// Autostart on system startup?
|
// Autostart on system startup?
|
||||||
// Get the startup folder shortcut path
|
// Open the startup registry key
|
||||||
char linkPath[ MAX_PATH ];
|
HKEY hKey;
|
||||||
SHGetSpecialFolderPath(0, linkPath, CSIDL_STARTUP, 0);
|
LONG lnRes = RegOpenKeyEx(
|
||||||
strcat(linkPath, "\\Bitcoin.lnk");
|
HKEY_CURRENT_USER,
|
||||||
|
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
|
||||||
|
0,
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&hKey
|
||||||
|
);
|
||||||
|
|
||||||
// If the shortcut exists already, remove it for updating
|
if ( ERROR_SUCCESS == lnRes )
|
||||||
remove(linkPath);
|
{
|
||||||
|
if (startOnSysBoot) {
|
||||||
|
// Get the current executable path
|
||||||
|
char exePath[ MAX_PATH ];
|
||||||
|
GetModuleFileName(NULL, exePath, _MAX_PATH + 1);
|
||||||
|
char runCmd[ MAX_PATH + 5 ];
|
||||||
|
strcat(runCmd, exePath);
|
||||||
|
strcat(runCmd," /min");
|
||||||
|
|
||||||
if (startOnSysBoot) {
|
RegSetValueEx(hKey,
|
||||||
CoInitialize(NULL);
|
"Bitcoin",
|
||||||
// Get the current executable path
|
0,
|
||||||
char exePath[ MAX_PATH ];
|
REG_SZ,
|
||||||
GetModuleFileName(NULL, exePath, _MAX_PATH + 1);
|
(BYTE*)runCmd,
|
||||||
|
sizeof(runCmd)
|
||||||
HRESULT hres = NULL;
|
);
|
||||||
IShellLink* psl = NULL;
|
}
|
||||||
// Get a pointer to the IShellLink interface.
|
else {
|
||||||
hres = CoCreateInstance(CLSID_ShellLink, NULL,
|
RegDeleteValue(hKey, "Bitcoin");
|
||||||
CLSCTX_INPROC_SERVER, IID_IShellLink,
|
|
||||||
reinterpret_cast<void**>(&psl));
|
|
||||||
|
|
||||||
if (SUCCEEDED(hres))
|
|
||||||
{
|
|
||||||
IPersistFile* ppf = NULL;
|
|
||||||
// Set the path to the shortcut target
|
|
||||||
psl->SetPath(exePath);
|
|
||||||
psl->SetArguments("/min");
|
|
||||||
// Query IShellLink for the IPersistFile interface for
|
|
||||||
// saving the shortcut in persistent storage.
|
|
||||||
hres = psl->QueryInterface(IID_IPersistFile,
|
|
||||||
reinterpret_cast<void**>(&ppf));
|
|
||||||
if (SUCCEEDED(hres))
|
|
||||||
{
|
|
||||||
WCHAR wsz[MAX_PATH];
|
|
||||||
// Ensure that the string is ANSI.
|
|
||||||
MultiByteToWideChar(CP_ACP, 0, linkPath, -1,
|
|
||||||
wsz, MAX_PATH);
|
|
||||||
// Save the link by calling IPersistFile::Save.
|
|
||||||
hres = ppf->Save(wsz, TRUE);
|
|
||||||
ppf->Release();
|
|
||||||
}
|
|
||||||
psl->Release();
|
|
||||||
}
|
}
|
||||||
CoUninitialize();
|
|
||||||
}
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1870,7 +1870,7 @@ COptionsPanelUIBase::COptionsPanelUIBase( wxWindow* parent, wxWindowID id, const
|
||||||
|
|
||||||
bSizer57->Add( m_checkCloseToTray, 0, wxALL, 5 );
|
bSizer57->Add( m_checkCloseToTray, 0, wxALL, 5 );
|
||||||
|
|
||||||
m_checkStartOnSysBoot = new wxCheckBox( this, wxID_ANY, wxT("Start on system boot"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_checkStartOnSysBoot = new wxCheckBox( this, wxID_ANY, wxT("Start with Windows"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
bSizer57->Add( m_checkStartOnSysBoot, 0, wxALL, 5 );
|
bSizer57->Add( m_checkStartOnSysBoot, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
|
|
@ -11849,7 +11849,7 @@
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="Panel" expanded="1">
|
<object class="Panel" expanded="0">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
|
@ -12076,7 +12076,7 @@
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="Panel" expanded="1">
|
<object class="Panel" expanded="0">
|
||||||
<property name="bg"></property>
|
<property name="bg"></property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="enabled">1</property>
|
<property name="enabled">1</property>
|
||||||
|
@ -12250,7 +12250,7 @@
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Start on system boot</property>
|
<property name="label">Start with Windows</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">m_checkStartOnSysBoot</property>
|
<property name="name">m_checkStartOnSysBoot</property>
|
||||||
|
|
Loading…
Reference in a new issue