<div>Hi, </div>
<div>&nbsp;</div>
<div>I have a small doubt regarding zope3 generations.</div>
<div>&nbsp;</div>
<div>In the current way of doing things:</div>
<div>- one should first put a dummy schema manager, restart the zope, so that a generation 0 is assigned to the application.</div>
<div>- one should then put the actual site specific schema manager which would use the evolution scripts from this point onwards in development.</div>
<div>&nbsp;</div>
<div>I essentially have a web based application product and the users have no idea of zope and python as such. The product is shipped to them, </div>
<div>the installer installs the whole zope 3 instances and services by itself and starts them. </div>
<div>&nbsp;</div>
<div>For the upgrade case, the installer (NSIS based) stops existing zope 3 services (Win32), replaces the software and then restarts the services. </div>
<div>&nbsp;</div>
<div>Unfortunately, I didn&#39;t have setup the dummy schema manager in the earlier version of the product. </div>
<div>&nbsp;</div>
<div>Now that I need to send an upgrade, I am facing the dilemma of how to setup the evolution scripts. As doing that would require doing more complicated processing</div>
<div>in the installer. (stop the services, put code for dummy schema manager, start the services, ensure that database schema generation has&nbsp; been setup for the product,</div>
<div>stop the service again, put the new code and the regular schema manager, start the service again). </div>
<div>&nbsp;</div>
<div>This would complicate my installer a bit more. Its already quite complicated. </div>
<div>&nbsp;</div>
<div>I don&#39;t know if this is quite a common use case scenario for zope based applications. I am sure its not relevant for applications which are based on a website and managed</div>
<div>by an expert, but for products with zope built-inside, may be this could be of use. </div>
<div>&nbsp;</div>
<div>As of now, I am thinking of a following solution. For the current upgrade, I will have some code which will automatically evolve the existing installation during startup </div>
<div>(i.e. DatabaseOpenedEvent) and actually assign a generation number in the root[generations_key][&#39;product_name&#39;] key. </div>
<div>&nbsp;</div>
<div>In the later upgrades, I will replace this with the regular schema manager. </div>
<div>&nbsp;</div>
<div>Comments from the zope 3 experts would be very useful. </div>
<div>&nbsp;</div>
<div>Thanks a lot.</div>
<div>With regards,</div>
<div>- Shailesh</div>
<div>&nbsp;</div>