MantisBT - CMake
View Issue Details
0014433CMakeCPackpublic2013-09-24 08:332016-06-10 14:31
Domagoj Saric 
Kitware Robot 
normalfeatureN/A
closedmoved 
 
 
0014433: Generator features: unification and expansion
Please consider unifying and extending the basic interface and capabilities of all GUI-based/interactive installer generators (those that don't just generate plain archives and/or drag'n'drop distributions, e.g. WiX, PackageMaker and NSIS) to provide:
 - OS version checking
 - hardware requirements checking
 - current-user vs global/system/allusers installations
 - separate introduction, EULA and release notes texts
 - automatic txt->rtf conversion if required (for above texts)
 - additional file uninstall (e.g. not installed but created at runtime or with scripts during installation..e.g. WiX RemoveFile On="uninstall")
 - ini files and registry read and write
 - shortcuts (desktop, start menu...) generation and uninstallation
 - pre/post install/update scripts/custom actions
 - symbolic link creation
 - patch/update granularity (component & key path in WiX)
 - capabilities introspection (ala C++ type traits), so that one can 'ask' a generator if it implements a given feature rather than hardcoding the generator name in the if condition (rather like using #if __has_feature( X ) then #ifdef __clang__)...


ps. this feature request perhaps first warrants discussion on the ML and then creation of individual tickets for specific features...

pps. <rant> I'd be open to helping and contributing if didn't require working with "The world's most obnoxious bloatware that is the Qt" which CMake uses only for a single dialog...</rant>
No tags attached.
Issue History
2013-09-24 08:33Domagoj SaricNew Issue
2013-09-24 08:40Rolf Eike BeerNote Added: 0033872
2013-09-24 08:52Domagoj SaricNote Added: 0033873
2013-09-24 08:53Domagoj SaricNote Edited: 0033873bug_revision_view_page.php?bugnote_id=33873#r1261
2013-09-24 08:58Domagoj SaricNote Added: 0033874
2013-09-24 09:02Eric NOULARDNote Added: 0033875
2013-09-24 10:48Domagoj SaricNote Added: 0033879
2013-09-25 06:24Domagoj SaricNote Added: 0033886
2013-10-02 04:55Domagoj SaricNote Added: 0033965
2013-10-02 05:22Domagoj SaricNote Added: 0033966
2015-03-06 10:39Mark StijnmanNote Added: 0038159
2016-06-10 14:29Kitware RobotNote Added: 0042373
2016-06-10 14:29Kitware RobotStatusnew => resolved
2016-06-10 14:29Kitware RobotResolutionopen => moved
2016-06-10 14:29Kitware RobotAssigned To => Kitware Robot
2016-06-10 14:31Kitware RobotStatusresolved => closed

Notes
(0033872)
Rolf Eike Beer   
2013-09-24 08:40   
If you rant then rant correctly: Qt4 is only needed for cmake-gui and you can build without it without any problems. CPack has no dependency on that.
(0033873)
Domagoj Saric   
2013-09-24 08:52   
(edited on: 2013-09-24 08:53)
- installer icon
 - installer GUI bitmaps (with queryable format support, e.g. cpack_can_generator_do( wix, png ))

ps. ad ranting@qt, well i did say 'used for dialog'...and for a non-nix-freak like me cmake-gui is synonymous with cmake ;)
pps. consider enabling editing of the ticket's description ;)

(0033874)
Domagoj Saric   
2013-09-24 08:58   
WiX resources:
 http://wixtoolset.org [^]
 http://www.joyofsetup.com [^]
 http://github.com/dblock/msiext [^]

Tutorials:
 http://wix.tramontana.co.hu [^]
 http://www.merlinia.com/mdt/WiXTutorial4.msl [^]
 http://blogs.technet.com/b/alexshev [^] (From MSI to Wix)
 http://www.dizzymonkeydesign.com/blog/misc/adding-and-customizing-dlgs-in-wix-3 [^]
 http://stackoverflow.com/questions/471424/wix-tricks-and-tips [^]
 http://kentie.net/article/wixtipstricks [^]
 http://www.packtpub.com/sites/default/files/3722-chapter-1-getting-started%20.pdf [^]

IDEs:
 http://www.icsharpcode.net/opensource/sd [^]
 http://wixedit.sourceforge.net [^]

speedups:
 - "consider only having select files (EXE,DLL,OCX...) as keyfiles and the
   rest as companion files"
 - disable rollback http://msdn.microsoft.com/en-us/library/windows/desktop/aa372899%28v=vs.85%29.aspx [^]
 - MSIFASTINSTALL http://msdn.microsoft.com/en-us/library/windows/desktop/dd408005%28v=vs.85%29.aspx [^]
(0033875)
Eric NOULARD   
2013-09-24 09:02   
This would be a nice idea.
Most of CPack generator features are controlled by:

Generic var:
CPACK_PACKAGE_DESCRIPTION_FILE

Specific var:
CPACK_RPM_PACKAGE_DESCRIPTION
CPACK_DEBIAN_PACKAGE_DESCRIPTION

which may override the "generic" value in the generic var with specific value.
i.e. the generic var takes there default value from the generic one.

So "unifying" several features is possible by creating generic and/or
specific control variable.

Now I suggest you explain on the CMake ML,

1) what you mean for each feature
   For example, I have no idea concerning what you mean by;
   - OS version checking
   - hardware requirements checking

2) how each targeted CPack generator would use the feature

3) Propose CPACK_xxx control variable name (generic and specific).
(0033879)
Domagoj Saric   
2013-09-24 10:48   
Don't know if I'll find the time for starting/structuring a ML discussion unfortunately...

1) simply something like
cpack_require
(
  os_version >= windows:501,osx:10.6,
  "${MY_PRODUCT} requires a later version of the operation system" #error message
)

cpack_require
(
  cpu_bits >= 64,
  "<some other error message>"
)

i.e. what you do in WiX with:
<Condition Message="MyProduct bit requires Windows XP SP3 or later">
  ( VersionNT > 501 ) OR ( VersionNT = 501 AND ServicePackLevel = 3 )
</Condition>

2) a CPack generator should _implement_ the feature and the user would _use_ it in a way that is as agnostic of the generator and the OS as possible...

3) I'd rather use cpack functions as the C-preprocessor-like syntax and semantics of CMake are something that I believe very few people actually like (probably tolerate as an ugly backward compatibility artefact of and otherwise greate idea/project/product)...
(0033886)
Domagoj Saric   
2013-09-25 06:24   
- require elevated privileges for the installer
 - file/directory/registry permission setting (at least respect the flags given to the related CMake install command)

ps. yes some generators already support some of these features, the idea is to make them all to support them through the same interface (and have a way to check capabilities so that one can handle generators that simply cannot implement a given feature, e.g. an uninstaller with Package Maker)
(0033965)
Domagoj Saric   
2013-10-02 04:55   
- wider (root) target installation directory choices:
a) disabled all together
b) one for all components (status quo)
c) independent, individually selectable, per-component installation directories
(http://public.kitware.com/Bug/view.php?id=11534 [^])
(0033966)
Domagoj Saric   
2013-10-02 05:22   
- detect previous installation directory/ies (when performing update installs)
 - offer a user option to either perform an update of an existing previous version or a side-by-side install (into a different directory)
(0038159)
Mark Stijnman   
2015-03-06 10:39   
Additional suggestion: allow to install files to per-user directories (such as %AppData%\MyApp\MyConfig.ini on Windows or $HOME/.MyApp/MyConfig.ini on unix)
(0042373)
Kitware Robot   
2016-06-10 14:29   
Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.