Generating custom Windows installers

Mark Hammond skippy.hammond at gmail.com
Fri Apr 6 22:15:22 EDT 2012


On 7/04/2012 12:57 AM, Cesar Covarrubias wrote:
> I'm still getting my feet wet on the Windows side of things with Python,
> so I apologize for the noobish question.
>
> If i am reading the create_link.py example correctly, that is created
> when the application itself is invoked, not during installation. Is that
> correct? If it is, how would I be able to invoke that when generating
> the MSI so that the installer creates the shortcut?

Right - I think I misunderstood your question.  If you can't arrange for 
install.py to run then what I suggested isn't going to help that.

Note however that bdist_msi really isn't targeted at creating 
stand-alone installations, but instead at installing Python extension 
modules.  I'd recommend using cx_Freeze to create the app, but looking 
further afield to create the installer for the app (eg, Inno, NSIS, WiX, 
etc)

Mark

>
> Cesar
>
> On Thu, Apr 5, 2012 at 8:42 PM, Mark Hammond <skippy.hammond at gmail.com
> <mailto:skippy.hammond at gmail.com>> wrote:
>
>     Seeing you are relying on win32com, you might as well add the links
>     directly rather than via the intermediate WScript.shell object.
>       Look in win32comext\shell\demos\__create_link.py for an example of
>     how to create shortcuts directly.
>
>     HTH,
>
>     Mark
>
>     On 6/04/2012 5:23 AM, cesar.covarrubias at gmail.com
>     <mailto:cesar.covarrubias at gmail.com> wrote:
>
>         Hello,
>
>         I am working on creating an installer of a Python 3.2
>         application that we programmed. The end goal is to create an
>         installer in which we can specify the install path, and create
>         shortcuts in the Start Menu and Desktop. Ideally, we would like
>         to give the users the option to create the Desktop or Start Menu
>         shortcuts.
>
>         I was able to create a .msi file with the setup.py and
>         install.py files below. This allowed me to specify the custom
>         default path but not create the shortcut in the Start Menu.
>
>         Can anyone help me figure out what I'm missing?
>
>
>         setup.py
>         --------
>
>         from cx_Freeze import setup, Executable
>         import sys
>
>         productName = "ProductName"
>         if 'bdist_msi' in sys.argv:
>              sys.argv += ['--initial-target-dir', 'C:\InstallDir\\' +
>         productName]
>              sys.argv += ['--install-script', 'install.py']
>
>         exe = Executable(
>                script="main.py",
>                base="Win32GUI",
>                targetName="Product.exe"
>               )
>         setup(
>                name="Product.exe",
>                version="1.0",
>                author="Me",
>                description="Copyright 2012",
>                executables=[exe],
>                scripts=[
>                         'install.py'
>                         ]
>                )
>         ------------------------------__-----------
>
>         install.py
>         ----------
>         import os
>         import sys
>         import win32com.client as w32client
>
>         shortcut_group_name = "Start Menu Dir"
>         shortcut_name = "Product Name"
>         shortcut_target = "http://www.microsoft.com"
>
>         sh = w32client.Dispatch("WScript.__Shell")
>         p = sh.SpecialFolders("__AllUsersPrograms")
>         assert(os.path.isdir(p))
>         p = os.path.join(p, shortcut_group_name)
>         if (not os.path.isdir(p)):
>              os.makedirs(p)
>         lnk = sh.CreateShortcut(os.path.__join(p, shortcut_name + ".lnk"))
>         lnk.TargetPath = shortcut_target
>         lnk.Save()
>
>
>
>
>
>
>
> --
> Very Respectfully,
> Cesar Covarrubias
>
>
>





More information about the Python-list mailing list