Re: [CMake] CPack custom page

2010-07-02 Thread Bo Thorsen

Den 28-06-2010 10:42, Bo Thorsen skrev:

Hi people,

I'm trying to build a custom NSIS page that's shown at the end of the
 installer, after all files have been installed. The purpose is to
set up a Windows service.

I can do the code for installing the service, but I'm having some
problems adding the custom page for it. And searching the net haven't
 given me any decent hits. Some pages say I should just hack the
template file, but that doesn't give any clue what to put in the
file.

Can one of you point to example code that adds a custom page,
please?


No takers, so I figured it out myself.

Here is the patch necessary for my CMakeLists.txt:

+# Use our own NSIS template
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/win/cmake 
${CMAKE_MODULE_PATH})


I have copied the NSIS.template.in file to the directory win/cmake.

The patch below adds a page to the installer just before the files are 
copied. The page asks the user if he wants to install MariaDB as a 
service. After the files are installed, the installer code sets up the 
service, if the user checked the checkbox on the page. The patch is 
against the NSIS.template.in from cmake 2.8.0.


--- \Program Files (x86)\CMake 
2.8\share\cmake-2.8\Modules\NSIS.template.in	2010-03-16 
18:52:34.0 +0100

+++ win\cmake\NSIS.template.in  2010-06-30 11:55:34.936755500 +0200
@@ -19,6 +19,10 @@
   Var ADD_TO_PATH_CURRENT_USER
   Var INSTALL_DESKTOP
   Var IS_DEFAULT_INSTALLDIR
+
+  Var INSTALL_AS_SERVICE
+  Var INSTALL_AS_SERVICE_CHECKBOX
+
 ;
 ;Include Modern UI

@@ -27,6 +31,10 @@
   ;Default installation folder
   InstallDir $programfil...@cpack_package_install_directory@

+;Include the nsDialogs package
+  !include nsDialogs.nsh
+  !include LogicLib.nsh
+
 ;
 ;General

@@ -383,7 +391,35 @@
 Pop $1
 Pop $0
 FunctionEnd
-
+
+Function InstallServicePage
+!insertmacro MUI_HEADER_TEXT Service Setup Run MariaDB 
automatically.

+
+nsDialogs::Create /NOUNLOAD 1018
+Pop $0
+
+${If} $0 == error
+Abort
+${EndIf}
+
+${NSD_CreateLabel} 0u 0u 100% 9u Should MariaDB be installed as a 
service?

+Pop $0
+
+${NSD_CreateCheckBox} 0u 14u 100% 16u Yes, please install the 
service.

+Pop $INSTALL_AS_SERVICE_CHECKBOX
+GetFunctionAddress $0 ServiceCheckBoxClicked
+nsDialogs::OnClick /NOUNLOAD $INSTALL_AS_SERVICE_CHECKBOX $0
+
+${NSD_CreateLabel} 0u 30u 100% 35u If this option is checked, this 
installer will add MariaDB to the list of services and start it.

+   Pop $0
+
+nsDialogs::Show
+FunctionEnd
+
+Function ServiceCheckBoxClicked
+${NSD_GetState} $INSTALL_AS_SERVICE_CHECKBOX $INSTALL_AS_SERVICE
+FunctionEnd
+

;
 ; Uninstall sutff

;
@@ -557,6 +593,8 @@

   @CPACK_NSIS_PAGE_COMPONENTS@

+  Page custom InstallServicePage
+
   !insertmacro MUI_PAGE_INSTFILES
   !insertmacro MUI_PAGE_FINISH

@@ -718,6 +756,12 @@

 @CPACK_NSIS_EXTRA_INSTALL_COMMANDS@

+  ${If} $INSTALL_AS_SERVICE == ${BST_CHECKED}
+  ;MessageBox MB_OK Install the service
+  nsExec::Exec '$INSTDIR\bin\mysqld.exe --install 
@cpack_package_n...@-@CPACK_PACKAGE_VERSION@'
+  nsExec::Exec 'net start 
@cpack_package_n...@-@CPACK_PACKAGE_VERSION@'

+  ${EndIf}
+
 SectionEnd

 Section -Add to path
@@ -818,6 +862,9 @@

 @CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@

+  nsExec::Exec 'net stop @cpack_package_n...@-@CPACK_PACKAGE_VERSION@'
+  nsExec::Exec '$INSTDIR\bin\mysqld.exe --remove 
@cpack_package_n...@-@CPACK_PACKAGE_VERSION@'

+
   ;Remove files we installed.
   ;Keep the list of directories here in sync with the File commands above.
 @CPACK_NSIS_DELETE_FILES@

I hope this is helpful for others.

Bo Thorsen.
Monty Program AB.

--

MariaDB: MySQL replacement
Community developed. Feature enhanced. Backward compatible.
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


[CMake] CPack custom page

2010-06-28 Thread Bo Thorsen

Hi people,

I'm trying to build a custom NSIS page that's shown at the end of the 
installer, after all files have been installed. The purpose is to set up 
a Windows service.


I can do the code for installing the service, but I'm having some 
problems adding the custom page for it. And searching the net haven't 
given me any decent hits. Some pages say I should just hack the template 
file, but that doesn't give any clue what to put in the file.


Can one of you point to example code that adds a custom page, please?

Bo Thorsen.
Monty Program AB.

--

MariaDB: MySQL replacement
Community developed. Feature enhanced. Backward compatible.
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake