View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0014433CMakeCPackpublic2013-09-24 08:332016-06-10 14:31
ReporterDomagoj Saric 
Assigned ToKitware Robot 
PrioritynormalSeverityfeatureReproducibilityN/A
StatusclosedResolutionmoved 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0014433: Generator features: unification and expansion
DescriptionPlease 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>
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0033872)
Rolf Eike Beer (developer)
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 (reporter)
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 (reporter)
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 (developer)
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 (reporter)
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 (reporter)
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 (reporter)
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 (reporter)
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 (reporter)
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 (administrator)
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.

 Issue History
Date Modified Username Field Change
2013-09-24 08:33 Domagoj Saric New Issue
2013-09-24 08:40 Rolf Eike Beer Note Added: 0033872
2013-09-24 08:52 Domagoj Saric Note Added: 0033873
2013-09-24 08:53 Domagoj Saric Note Edited: 0033873
2013-09-24 08:58 Domagoj Saric Note Added: 0033874
2013-09-24 09:02 Eric NOULARD Note Added: 0033875
2013-09-24 10:48 Domagoj Saric Note Added: 0033879
2013-09-25 06:24 Domagoj Saric Note Added: 0033886
2013-10-02 04:55 Domagoj Saric Note Added: 0033965
2013-10-02 05:22 Domagoj Saric Note Added: 0033966
2015-03-06 10:39 Mark Stijnman Note Added: 0038159
2016-06-10 14:29 Kitware Robot Note Added: 0042373
2016-06-10 14:29 Kitware Robot Status new => resolved
2016-06-10 14:29 Kitware Robot Resolution open => moved
2016-06-10 14:29 Kitware Robot Assigned To => Kitware Robot
2016-06-10 14:31 Kitware Robot Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team