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:
sirius-m 2009-10-04 11:38:29 +00:00
parent 661f878002
commit 0cc05617d1
6 changed files with 61 additions and 69 deletions

View file

@ -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

View file

@ -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>

View file

@ -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
View file

@ -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);
} }

View file

@ -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 );

View file

@ -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>