Generating custom Windows installers

Cesar Covarrubias cesar.covarrubias at gmail.com
Fri Apr 6 10:57:00 EDT 2012


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?

Cesar

On Thu, Apr 5, 2012 at 8:42 PM, Mark Hammond <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 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120406/934b7528/attachment.html>


More information about the Python-list mailing list