source: sasview/_modules/sas/sasview/installer_generator.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 75.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.sasview.installer_generator &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../index.html" />
28    <link rel="up" title="Module code" href="../../index.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for sas.sasview.installer_generator</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">This module generates .iss file according to the local config of</span>
53<span class="sd">the current application. Please make sure a file named &quot;local_config.py&quot;</span>
54<span class="sd">exists in the current directory. Edit local_config.py according to your needs.</span>
55<span class="sd">&quot;&quot;&quot;</span>
56<span class="kn">import</span> <span class="nn">local_config</span>
57<span class="kn">import</span> <span class="nn">os</span> 
58<span class="kn">import</span> <span class="nn">string</span>
59
60<span class="n">REG_PROGRAM</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;{app}\MYPROG.EXE&quot;&quot; &quot;&quot;%1&quot;&quot;&quot;</span>
61<span class="n">APPLICATION</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">__appname__</span> <span class="p">)</span><span class="o">+</span> <span class="s">&#39;.exe&#39;</span>
62<span class="n">AppName</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">__appname__</span> <span class="p">)</span>
63<span class="n">AppVerName</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">__appname__</span> <span class="p">)</span><span class="o">+</span><span class="s">&#39;-&#39;</span><span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span>
64<span class="n">Dev</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
65<span class="k">if</span> <span class="n">AppVerName</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&#39;dev&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
66    <span class="n">Dev</span> <span class="o">=</span> <span class="s">&#39;-Dev&#39;</span>
67<span class="n">AppPublisher</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">_copyright</span>
68<span class="n">AppPublisherURL</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">_homepage</span>
69<span class="n">AppSupportURL</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">_homepage</span>
70<span class="n">AppUpdatesURL</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">_homepage</span>
71<span class="n">ChangesEnvironment</span> <span class="o">=</span> <span class="s">&#39;true&#39;</span>
72<span class="n">DefaultDirName</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&quot;{pf}&quot;</span> <span class="p">,</span> <span class="n">AppName</span><span class="o">+</span><span class="n">Dev</span><span class="p">)</span> 
73<span class="n">DefaultGroupName</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">DefaultGroupName</span><span class="p">,</span> <span class="n">AppVerName</span><span class="p">)</span>
74                               
75<span class="n">OutputBaseFilename</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">OutputBaseFilename</span>
76<span class="n">SetupIconFile</span> <span class="o">=</span> <span class="s">&quot;images</span><span class="se">\\</span><span class="s">ball.ico&quot;</span>
77<span class="n">LicenseFile</span> <span class="o">=</span> <span class="s">&#39;license.txt&#39;</span>
78<span class="n">DisableProgramGroupPage</span> <span class="o">=</span> <span class="s">&#39;yes&#39;</span>
79<span class="n">Compression</span> <span class="o">=</span> <span class="s">&#39;lzma&#39;</span>
80<span class="n">SolidCompression</span> <span class="o">=</span> <span class="s">&#39;yes&#39;</span>
81<span class="n">PrivilegesRequired</span> <span class="o">=</span> <span class="s">&#39;none&#39;</span>
82<span class="n">INSTALLER_FILE</span> <span class="o">=</span> <span class="s">&#39;installer&#39;</span>
83
84<span class="n">icon_path</span> <span class="o">=</span>  <span class="n">local_config</span><span class="o">.</span><span class="n">icon_path</span>
85<span class="n">media_path</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">media_path</span>
86<span class="n">test_path</span> <span class="o">=</span> <span class="n">local_config</span><span class="o">.</span><span class="n">test_path</span>
87
88<div class="viewcode-block" id="find_extension"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.find_extension">[docs]</a><span class="k">def</span> <span class="nf">find_extension</span><span class="p">():</span>
89    <span class="sd">&quot;&quot;&quot;</span>
90<span class="sd">    Describe the extensions that can be read by the current application</span>
91<span class="sd">    &quot;&quot;&quot;</span>
92    <span class="n">list_data</span> <span class="o">=</span> <span class="p">[]</span>
93    <span class="n">list_app</span> <span class="o">=</span><span class="p">[]</span>
94    <span class="k">try</span><span class="p">:</span>
95       
96        <span class="c">#(ext, type, name, flags)</span>
97        <span class="kn">from</span> <span class="nn">sas.dataloader.loader</span> <span class="kn">import</span> <span class="n">Loader</span>
98        <span class="n">wild_cards</span> <span class="o">=</span> <span class="n">Loader</span><span class="p">()</span><span class="o">.</span><span class="n">get_wildcards</span><span class="p">()</span>
99        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">wild_cards</span><span class="p">:</span>
100            <span class="c">#[&#39;All (*.*)|*.*&#39;]</span>
101            <span class="n">file_type</span><span class="p">,</span> <span class="n">ext</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s">&quot;|*&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
102            <span class="k">if</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;.*&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">list_data</span><span class="p">:</span>
103                <span class="n">list_data</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">ext</span><span class="p">,</span> <span class="s">&#39;string&#39;</span><span class="p">,</span> <span class="n">file_type</span><span class="p">))</span>
104    <span class="k">except</span><span class="p">:</span>
105        <span class="k">pass</span>
106    <span class="k">try</span><span class="p">:</span>
107        <span class="n">file_type</span><span class="p">,</span> <span class="n">ext</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">local_config</span><span class="o">.</span><span class="n">APPLICATION_WLIST</span><span class="p">,</span> <span class="s">&quot;|*&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
108        <span class="k">if</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;.&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">list_app</span><span class="p">:</span>
109            <span class="n">list_app</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">ext</span><span class="p">,</span> <span class="s">&#39;string&#39;</span><span class="p">,</span> <span class="n">file_type</span><span class="p">))</span>
110    <span class="k">except</span><span class="p">:</span>
111        <span class="k">pass</span>
112    <span class="k">try</span><span class="p">:</span>
113        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">local_config</span><span class="o">.</span><span class="n">PLUGINS_WLIST</span><span class="p">:</span>
114            <span class="n">file_type</span><span class="p">,</span> <span class="n">ext</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s">&quot;|*&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
115            <span class="k">if</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;.&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ext</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">list_app</span><span class="p">:</span>
116                <span class="n">list_app</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">ext</span><span class="p">,</span> <span class="s">&#39;string&#39;</span><span class="p">,</span> <span class="n">file_type</span><span class="p">))</span> 
117    <span class="k">except</span><span class="p">:</span>
118        <span class="k">pass</span>
119    <span class="k">return</span> <span class="n">list_data</span><span class="p">,</span> <span class="n">list_app</span></div>
120<span class="n">DATA_EXTENSION</span><span class="p">,</span> <span class="n">APP_EXTENSION</span> <span class="o">=</span> <span class="n">find_extension</span><span class="p">()</span>
121
122<div class="viewcode-block" id="write_registry"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_registry">[docs]</a><span class="k">def</span> <span class="nf">write_registry</span><span class="p">(</span><span class="n">data_extension</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">app_extension</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
123    <span class="sd">&quot;&quot;&quot;</span>
124<span class="sd">    create file association for windows.</span>
125<span class="sd">    Allow open file on double click</span>
126<span class="sd">    &quot;&quot;&quot;</span>
127    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
128    <span class="k">if</span> <span class="n">data_extension</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">data_extension</span><span class="p">:</span>
129        <span class="n">openwithlist</span> <span class="o">=</span> <span class="s">&quot;OpenWithList\</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
130        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n\n</span><span class="s">[Registry]</span><span class="se">\n</span><span class="s">&quot;</span>
131        <span class="k">for</span> <span class="p">(</span><span class="n">ext</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="n">data_extension</span><span class="p">:</span>
132            <span class="nb">list</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ext</span><span class="p">,</span> <span class="n">openwithlist</span><span class="p">)</span>
133            <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot;&quot;&quot;Root: HKCR;</span><span class="se">\t</span><span class="s">Subkey: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
134            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletekey noerror&#39;</span><span class="p">)</span>
135            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
136        <span class="c">#list the file on right-click</span>
137        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKCR; Subkey: &quot;applications\</span><span class="si">%s</span><span class="s">\shell\open\command&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>\
138                              <span class="o">%</span>  <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
139        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
140        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span><span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span> 
141        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: </span><span class="se">\&quot;</span><span class="s">&quot;&quot;{app}\</span><span class="si">%s</span><span class="s">&quot;&quot;  &quot;&quot;</span><span class="si">%s</span><span class="s">1</span><span class="se">\&quot;</span><span class="s">&quot;&quot;; </span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span><span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">),</span>
142                                                          <span class="nb">str</span><span class="p">(</span><span class="s">&#39;%&#39;</span><span class="p">))</span>   
143        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletevalue noerror&#39;</span><span class="p">)</span>
144        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
145        <span class="n">user_list</span> <span class="o">=</span> <span class="s">&quot;Software\Classes&quot;</span> 
146        <span class="k">for</span> <span class="p">(</span><span class="n">ext</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="n">data_extension</span><span class="p">:</span>
147            <span class="nb">list</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">user_list</span><span class="p">,</span> <span class="n">ext</span><span class="p">,</span> <span class="n">openwithlist</span><span class="p">)</span>
148            <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot;&quot;&quot;Root: HKCU;</span><span class="se">\t</span><span class="s">Subkey: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
149            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletekey noerror&#39;</span><span class="p">)</span>
150            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
151        <span class="c">#list the file on right-click</span>
152        <span class="n">user_list</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&quot;Software&quot;</span><span class="p">,</span> <span class="s">&quot;Classes&quot;</span><span class="p">,</span> <span class="s">&quot;applications&quot;</span><span class="p">)</span>
153        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKCU; Subkey: &quot;</span><span class="si">%s</span><span class="s">\</span><span class="si">%s</span><span class="s">\shell\open\command&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>\
154                              <span class="o">%</span>  <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">user_list</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">))</span>
155        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
156        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span><span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span> 
157        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: </span><span class="se">\&quot;</span><span class="s">&quot;&quot;{app}\</span><span class="si">%s</span><span class="s">&quot;&quot;  &quot;&quot;</span><span class="si">%s</span><span class="s">1</span><span class="se">\&quot;</span><span class="s">&quot;&quot;; </span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span><span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">),</span>
158                                                          <span class="nb">str</span><span class="p">(</span><span class="s">&#39;%&#39;</span><span class="p">))</span>   
159        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletevalue noerror&#39;</span><span class="p">)</span>
160        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>       
161    <span class="k">if</span> <span class="n">app_extension</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">app_extension</span><span class="p">:</span>
162        <span class="k">for</span> <span class="p">(</span><span class="n">ext</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="n">app_extension</span><span class="p">:</span>
163            <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot;&quot;&quot;Root: HKCR;</span><span class="se">\t</span><span class="s">Subkey: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span>
164            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span>
165            <span class="c">#file type empty set the current application as the default </span>
166            <span class="c">#reader for this file. change the value of file_type to another</span>
167            <span class="c">#string modify the default reader</span>
168            <span class="n">file_type</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
169            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span>
170            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
171            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletevalue  noerror&#39;</span><span class="p">)</span>
172            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
173    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKCR; Subkey: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
174    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
175    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span> 
176    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&quot;SasView File&quot;</span><span class="p">)</span> 
177    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s"> </span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&quot;uninsdeletekey  noerror&quot;</span><span class="p">)</span>
178    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
179       
180    <span class="c">#execute the file on double-click</span>
181    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKCR; Subkey: &quot;{app}\</span><span class="si">%s</span><span class="s">\shell\open\command&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>  <span class="o">%</span>  <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
182    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
183    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span><span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span> 
184    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: </span><span class="se">\&quot;</span><span class="s">&quot;&quot;{app}\</span><span class="si">%s</span><span class="s">&quot;&quot;  &quot;&quot;</span><span class="si">%s</span><span class="s">1</span><span class="se">\&quot;</span><span class="s">&quot;&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span><span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">),</span>
185                                                          <span class="nb">str</span><span class="p">(</span><span class="s">&#39;%&#39;</span><span class="p">))</span> 
186    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s"> </span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&quot;uninsdeletevalue noerror&quot;</span><span class="p">)</span>
187    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>                                                     
188    <span class="c">#create default icon</span>
189    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKCR; Subkey: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">SetupIconFile</span><span class="p">)</span>
190    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
191    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span> 
192    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: &quot;{app}\</span><span class="si">%s</span><span class="s">,0&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
193    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s"> </span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&quot;uninsdeletevalue noerror&quot;</span><span class="p">)</span>
194    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span> 
195
196   
197    <span class="c">#SASVIEWPATH</span>
198    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Root: HKLM; Subkey: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>  <span class="o">%</span>  <span class="nb">str</span><span class="p">(</span><span class="s">&#39;SYSTEM\CurrentControlSet\Control\Session Manager\Environment&#39;</span><span class="p">)</span>
199    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;expandsz&#39;</span><span class="p">)</span>
200    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;SASVIEWPATH&#39;</span><span class="p">)</span> 
201    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: &quot;{app}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>
202    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Flags: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;uninsdeletevalue noerror&#39;</span><span class="p">)</span>
203    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
204   
205    <span class="c">#PATH</span>
206    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Write to PATH (below) is disabled; need more tests</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
207    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;;Root: HKCU; Subkey: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>  <span class="o">%</span>  <span class="nb">str</span><span class="p">(</span><span class="s">&#39;Environment&#39;</span><span class="p">)</span>
208    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueType: </span><span class="si">%s</span><span class="s">; &quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;expandsz&#39;</span><span class="p">)</span>
209    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueName: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">)</span> 
210    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;ValueData: &quot;</span><span class="si">%s</span><span class="s">;{olddata}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;%SASVIEWPATH%&#39;</span><span class="p">)</span>
211    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Check: </span><span class="si">%s</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;NeedsAddPath()&#39;</span><span class="p">)</span>
212    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
213       
214    <span class="k">return</span> <span class="n">msg</span>
215</div>
216<div class="viewcode-block" id="write_language"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_language">[docs]</a><span class="k">def</span> <span class="nf">write_language</span><span class="p">(</span><span class="n">language</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;english&#39;</span><span class="p">],</span> <span class="n">msfile</span><span class="o">=</span><span class="s">&quot;compiler:Default.isl&quot;</span><span class="p">):</span> 
217    <span class="sd">&quot;&quot;&quot;</span>
218<span class="sd">    define the language of the application</span>
219<span class="sd">    &quot;&quot;&quot;</span> 
220    <span class="n">msg</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
221    <span class="k">if</span> <span class="n">language</span><span class="p">:</span>
222        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n\n</span><span class="s">[Languages]</span><span class="se">\n</span><span class="s">&quot;</span>
223        <span class="k">for</span> <span class="n">lang</span> <span class="ow">in</span> <span class="n">language</span><span class="p">:</span>
224            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">MessagesFile: &quot;</span><span class="si">%s</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">lang</span><span class="p">),</span> 
225                                                           <span class="nb">str</span><span class="p">(</span><span class="n">msfile</span><span class="p">))</span>
226    <span class="k">return</span> <span class="n">msg</span> 
227</div>
228<div class="viewcode-block" id="write_tasks"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_tasks">[docs]</a><span class="k">def</span> <span class="nf">write_tasks</span><span class="p">():</span>
229    <span class="sd">&quot;&quot;&quot;</span>
230<span class="sd">    create desktop icon</span>
231<span class="sd">    &quot;&quot;&quot;</span>
232    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n\n</span><span class="s">[Tasks]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
233    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;desktopicon&quot;;</span><span class="se">\t</span><span class="s">Description: &quot;{cm:CreateDesktopIcon}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>
234    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;GroupDescription: &quot;{cm:AdditionalIcons}&quot;;</span><span class="se">\t</span><span class="s">Flags: unchecked</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
235    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;quicklaunchicon&quot;; Description: &quot;{cm:CreateQuickLaunchIcon}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>
236    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;GroupDescription: &quot;{cm:AdditionalIcons}&quot;;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
237    <span class="k">return</span> <span class="n">msg</span>
238</div>
239<span class="n">dist_path</span> <span class="o">=</span> <span class="s">&quot;dist&quot;</span>
240<div class="viewcode-block" id="write_file"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_file">[docs]</a><span class="k">def</span> <span class="nf">write_file</span><span class="p">():</span>
241    <span class="sd">&quot;&quot;&quot;</span>
242<span class="sd">    copy some data files</span>
243<span class="sd">    &quot;&quot;&quot;</span>
244    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n\n</span><span class="s">[Files]</span><span class="se">\n</span><span class="s">&quot;</span>
245    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Source: &quot;</span><span class="si">%s</span><span class="s">\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">dist_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">))</span>
246    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;DestDir: &quot;{app}&quot;;</span><span class="se">\t</span><span class="s">Flags: ignoreversion</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
247    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Source: &quot;dist\*&quot;;</span><span class="se">\t</span><span class="s">DestDir: &quot;{app}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>
248    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Flags: ignoreversion recursesubdirs createallsubdirs</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
249    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Source: &quot;dist\plugin_models\*&quot;;</span><span class="se">\t</span><span class="s">DestDir: &quot;{userdesktop}\..\.sasview\plugin_models&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> 
250    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Flags: recursesubdirs createallsubdirs</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
251    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Source: &quot;dist\config\custom_config.py&quot;;</span><span class="se">\t</span><span class="s">DestDir: &quot;{userdesktop}\..\.sasview\config&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> 
252    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Flags: recursesubdirs createallsubdirs</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
253    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Source: &quot;dist\default_categories.json&quot;;    DestDir: &quot;{userdesktop}\..\.sasview&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> 
254    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;DestName: &quot;serialized_cat.json&quot;;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
255    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;;</span><span class="se">\t</span><span class="s">NOTE: Don&#39;t use &quot;Flags: ignoreversion&quot; on any shared system files&quot;&quot;&quot;</span>
256    <span class="k">return</span> <span class="n">msg</span>
257</div>
258<div class="viewcode-block" id="write_icon"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_icon">[docs]</a><span class="k">def</span> <span class="nf">write_icon</span><span class="p">():</span>
259    <span class="sd">&quot;&quot;&quot;</span>
260<span class="sd">    Create application icon</span>
261<span class="sd">    &quot;&quot;&quot;</span>
262    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n\n</span><span class="s">[Icons]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
263    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;{group}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppName</span><span class="p">)</span>
264    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Filename: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span>  <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
265    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;WorkingDir: &quot;{app}&quot;; IconFilename: &quot;{app}\images</span><span class="se">\\</span><span class="s">ball.ico&quot; </span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
266    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;{group}\{cm:UninstallProgram, </span><span class="si">%s</span><span class="s">}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppName</span><span class="p">)</span>
267    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Filename: &quot;{uninstallexe}&quot; </span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
268    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;{commondesktop}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppVerName</span><span class="p">)</span>
269    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Filename: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
270    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Tasks: desktopicon; WorkingDir: &quot;{app}&quot; ; IconFilename: &quot;{app}\images</span><span class="se">\\</span><span class="s">ball.ico&quot; </span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
271    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;{userappdata}\Microsoft\Internet Explorer\Quick Launch\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppVerName</span><span class="p">)</span>
272    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Filename: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
273    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Tasks: quicklaunchicon; WorkingDir: &quot;{app}&quot;; IconFilename: &quot;{app}\images</span><span class="se">\\</span><span class="s">ball.ico&quot; </span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
274    <span class="k">return</span> <span class="n">msg</span>
275</div>
276<div class="viewcode-block" id="write_run"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_run">[docs]</a><span class="k">def</span> <span class="nf">write_run</span><span class="p">():</span>
277    <span class="sd">&quot;&quot;&quot;</span>
278<span class="sd">    execute some file</span>
279<span class="sd">    &quot;&quot;&quot;</span>
280    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n\n</span><span class="s">[Run]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
281    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Filename: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">APPLICATION</span><span class="p">)</span>
282    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Description: &quot;{cm:LaunchProgram, </span><span class="si">%s</span><span class="s">}&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span><span class="nb">str</span><span class="p">(</span><span class="n">AppName</span><span class="p">)</span> 
283    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Flags: nowait postinstall skipifsilent</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
284    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Install the Microsoft C++ DLL redistributable package if it is &quot;&quot;&quot;</span>
285    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;provided and the DLLs are not present on the target system.</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
286    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Note that the redistributable package is included if the app was &quot;&quot;&quot;</span>
287    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;built using Python 2.6 or 2.7, but not with 2.5.</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
288    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Parameter options:</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
289    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; - for silent install use: &quot;/q&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
290    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; - for silent install with progress bar use: &quot;/qb&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
291    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; - for silent install with progress bar but disallow &quot;&quot;&quot;</span>
292    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;cancellation of operation use: &quot;/qb!&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
293    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Note that we do not use the postinstall flag as this would &quot;&quot;&quot;</span>
294    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;display a checkbox and thus require the user to decide what to do.</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
295    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;;Filename: &quot;{app}</span><span class="se">\\</span><span class="s">vcredist_x86.exe&quot;; Parameters: &quot;/qb!&quot;; &quot;&quot;&quot;</span>
296    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;WorkingDir: &quot;{tmp}&quot;; StatusMsg: &quot;Installing Microsoft Visual &quot;&quot;&quot;</span>
297    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;C++ 2008 Redistributable Package ...&quot;; Check: InstallVC90CRT(); &quot;&quot;&quot;</span>
298    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Flags: skipifdoesntexist waituntilterminated</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
299    <span class="k">return</span> <span class="n">msg</span>
300</div>
301<div class="viewcode-block" id="write_dirs"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_dirs">[docs]</a><span class="k">def</span> <span class="nf">write_dirs</span><span class="p">():</span>
302    <span class="sd">&quot;&quot;&quot;</span>
303<span class="sd">    Define Dir permission</span>
304<span class="sd">    &quot;&quot;&quot;</span>
305    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n\n</span><span class="s">[Dirs]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
306    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Name: &quot;{app}\</span><span class="si">%s</span><span class="s">&quot;;</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span>
307    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Permissions: everyone-modify</span><span class="se">\t</span><span class="s">&quot;&quot;&quot;</span> 
308    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
309    <span class="k">return</span> <span class="n">msg</span>
310</div>
311<div class="viewcode-block" id="write_code"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_code">[docs]</a><span class="k">def</span> <span class="nf">write_code</span><span class="p">():</span>
312    <span class="sd">&quot;&quot;&quot;</span>
313<span class="sd">    Code that checks the existing path and snaviewpath </span>
314<span class="sd">    in the environmental viriables/PATH</span>
315<span class="sd">    &quot;&quot;&quot;</span>
316    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n\n</span><span class="s">[Code]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
317    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;function InstallVC90CRT(): Boolean;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
318    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;begin</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
319    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    Result := not DirExists(&#39;C:\WINDOWS\WinSxS</span><span class="se">\\</span><span class="s">x86_Microsoft.VC90.&quot;&quot;&quot;</span>
320    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375&#39;);</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
321    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;end;</span><span class="se">\n\n</span><span class="s">&quot;&quot;&quot;</span>
322    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;function NeedsAddPath(): boolean;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
323    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;var</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
324    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  oldpath: string;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
325    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  newpath: string;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
326    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  pathArr:    TArrayOfString;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
327    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  i:        Integer;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
328    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;begin</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
329    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  RegQueryStringValue(HKEY_CURRENT_USER,&#39;Environment&#39;,&quot;&quot;&quot;</span>
330    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;&#39;PATH&#39;, oldpath)</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
331    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  oldpath := oldpath + &#39;;&#39;;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
332    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  newpath := &#39;%SASVIEWPATH%&#39;;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
333    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  i := 0;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
334    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  while (Pos(&#39;;&#39;, oldpath) &gt; 0) do begin</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
335    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    SetArrayLength(pathArr, i+1);</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
336    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    pathArr[i] := Copy(oldpath, 0, Pos(&#39;;&#39;, oldpath)-1);</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
337    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    oldpath := Copy(oldpath, Pos(&#39;;&#39;, oldpath)+1,&quot;&quot;&quot;</span>
338    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot; Length(oldpath));</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
339    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    i := i + 1;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
340    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    // Check if current directory matches app dir</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
341    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    if newpath = pathArr[i-1] </span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
342    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    then begin</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
343    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;      Result := False;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
344    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;      exit;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
345    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;    end;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
346    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  end;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
347    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;  Result := True;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
348    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;end;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
349    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
350    <span class="k">return</span> <span class="n">msg</span>
351</div>
352<div class="viewcode-block" id="write_uninstalldelete"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.write_uninstalldelete">[docs]</a><span class="k">def</span> <span class="nf">write_uninstalldelete</span><span class="p">():</span>
353    <span class="sd">&quot;&quot;&quot;</span>
354<span class="sd">    Define uninstalldelete</span>
355<span class="sd">    &quot;&quot;&quot;</span>
356    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n</span><span class="s">[UninstallDelete]</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
357    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; Delete directories and files that are dynamically created by &quot;&quot;&quot;</span>
358    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;the application (i.e. at runtime).</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
359    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Type: filesandordirs; Name: &quot;{app}\.matplotlib&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
360    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Type: files; Name: &quot;{app}\*.*&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
361    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; The following is a workaround for the case where the &quot;&quot;&quot;</span>
362    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;application is installed and uninstalled but the</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
363    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;;{app} directory is not deleted because it has user files.  &quot;&quot;&quot;</span>
364    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Then the application is installed into the</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
365    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; existing directory, user files are deleted, and the &quot;&quot;&quot;</span>
366    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;application is un-installed again.  Without the</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
367    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; directive below, {app} will not be deleted because Inno Setup &quot;&quot;&quot;</span>
368    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;did not create it during the previous</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
369    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;; installation.</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
370    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;Type: dirifempty; Name: &quot;{app}&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span>
371    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span> 
372    <span class="k">return</span> <span class="n">msg</span>
373</div>
374<div class="viewcode-block" id="generate_installer"><a class="viewcode-back" href="../../../dev/api/sas.sasview.html#sas.sasview.installer_generator.generate_installer">[docs]</a><span class="k">def</span> <span class="nf">generate_installer</span><span class="p">():</span>
375    <span class="sd">&quot;&quot;&quot;</span>
376<span class="sd">    &quot;&quot;&quot;</span>
377    <span class="n">TEMPLATE</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">; Script generated by the Inno Setup Script Wizard</span><span class="se">\n</span><span class="s">&quot;</span>
378    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">; and local_config.py located in this directory.</span><span class="se">\n</span><span class="s"> &quot;</span>
379    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!&quot;</span>
380    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">[Setup]</span><span class="se">\n\n</span><span class="s">&quot;</span> 
381    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;ChangesAssociations=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span><span class="nb">str</span><span class="p">(</span><span class="s">&#39;yes&#39;</span><span class="p">)</span>
382    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppName=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppName</span><span class="p">)</span>
383    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppVerName=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppVerName</span><span class="p">)</span>
384    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppPublisher=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppPublisher</span><span class="p">)</span>
385    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppPublisherURL=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppPublisherURL</span><span class="p">)</span>
386    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppSupportURL=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppSupportURL</span><span class="p">)</span>
387    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;AppUpdatesURL=</span><span class="si">%s</span><span class="s"> </span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">AppUpdatesURL</span><span class="p">)</span>
388    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;ChangesEnvironment=</span><span class="si">%s</span><span class="s"> </span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ChangesEnvironment</span><span class="p">)</span>
389    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;DefaultDirName=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">DefaultDirName</span><span class="p">)</span>
390    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;DefaultGroupName=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">DefaultGroupName</span><span class="p">)</span>
391    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;DisableProgramGroupPage=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">DisableProgramGroupPage</span><span class="p">)</span>
392    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;LicenseFile=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">LicenseFile</span><span class="p">)</span>
393    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;OutputBaseFilename=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">OutputBaseFilename</span><span class="p">)</span>
394    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;SetupIconFile=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">SetupIconFile</span><span class="p">)</span>
395    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;Compression=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">Compression</span><span class="p">)</span>
396    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;SolidCompression=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">SolidCompression</span><span class="p">)</span>
397    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;PrivilegesRequired=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">PrivilegesRequired</span><span class="p">)</span>
398    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="s">&quot;UsePreviousAppDir=no</span><span class="se">\n</span><span class="s">&quot;</span>
399   
400    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_registry</span><span class="p">(</span><span class="n">data_extension</span><span class="o">=</span><span class="n">DATA_EXTENSION</span><span class="p">,</span>
401                                <span class="n">app_extension</span><span class="o">=</span><span class="n">APP_EXTENSION</span><span class="p">)</span>
402    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_language</span><span class="p">()</span>
403    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_tasks</span><span class="p">()</span>
404    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_file</span><span class="p">()</span>
405    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_icon</span><span class="p">()</span>
406    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_run</span><span class="p">()</span>
407    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_dirs</span><span class="p">()</span>
408    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_code</span><span class="p">()</span>
409    <span class="n">TEMPLATE</span> <span class="o">+=</span> <span class="n">write_uninstalldelete</span><span class="p">()</span>
410    <span class="n">path</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">.iss&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">INSTALLER_FILE</span><span class="p">)</span>
411    <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="s">&#39;w&#39;</span><span class="p">)</span> 
412    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">TEMPLATE</span><span class="p">)</span>
413    <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
414    <span class="k">print</span> <span class="s">&quot;Generate Inno setup installer script complete&quot;</span>
415    <span class="k">print</span> <span class="s">&quot;A new file </span><span class="si">%s</span><span class="s">.iss should be created.Please refresh your directory&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">INSTALLER_FILE</span><span class="p">)</span>
416    </div>
417<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
418    <span class="n">generate_installer</span><span class="p">()</span>
419</pre></div>
420
421          </div>
422        </div>
423      </div>
424      <div class="sphinxsidebar">
425        <div class="sphinxsidebarwrapper">
426<div id="searchbox" style="display: none">
427  <h3>Quick search</h3>
428    <form class="search" action="../../../search.html" method="get">
429      <input type="text" name="q" />
430      <input type="submit" value="Go" />
431      <input type="hidden" name="check_keywords" value="yes" />
432      <input type="hidden" name="area" value="default" />
433    </form>
434    <p class="searchtip" style="font-size: 90%">
435    Enter search terms or a module, class or function name.
436    </p>
437</div>
438<script type="text/javascript">$('#searchbox').show(0);</script>
439        </div>
440      </div>
441      <div class="clearer"></div>
442    </div>
443    <div class="related">
444      <h3>Navigation</h3>
445      <ul>
446        <li class="right" style="margin-right: 10px">
447          <a href="../../../genindex.html" title="General Index"
448             >index</a></li>
449        <li class="right" >
450          <a href="../../../py-modindex.html" title="Python Module Index"
451             >modules</a> |</li>
452        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
453          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
454      </ul>
455    </div>
456    <div class="footer">
457        &copy; Copyright 2013, The SasView Project.
458      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
459    </div>
460  </body>
461</html>
Note: See TracBrowser for help on using the repository browser.