2013-07-09 125 views
3

我正在開發一個需要安裝python來執行的應用程序。我正在考慮創建一個安裝程序(對於Windows),它將在安裝我的應用程序之前自動安裝所需的設置。我已經通過inno安裝程序,看起來像我的要求更好的解決方案。我是新的python和inno setup.Can任何機構提供了一些鏈接和這方面的指導。任何幫助表示讚賞。使用inno setup創建python的windows安裝程序

+2

來自python網站的引用「Python版本包括一個優秀的Windows安裝程序」 - 你的問題是什麼? –

+0

@sir Rufo我的應用程序需要python環境的功能,所以在安裝我的應用程序之前,我需要檢查python是否安裝,所以我想通過使用安裝程序來使其自動化,它將檢查python並將安裝它if沒有找到python。我已經觀察到inno setup是一個很好的工具,因此我們希望有一些inno爲此設置腳本或指南。 – dileepVikram

+0

所以你正在尋找一些東西來整合python安裝程序?然後你應該更新你的問題:o) –

回答

4

如果你之前自動思維創建一個安裝程序(適用於Windows)將安裝所需設置的空空(安裝)我的應用程序

然後下面的腳本將幫助你做到這一點...你需要在runsection和files部分提到python可執行文件,就像這個腳本中的winscp一樣。

; Script generated by the Inno Setup Script Wizard. 
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 

#define MyAppName "My Program" 
#define MyAppVersion "1.5" 
#define MyAppPublisher "My Company, Inc." 
#define MyAppURL "http://www.example.com/" 
#define MyAppExeName "MyProg.exe" 

[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId={{BD59E856-F194-4E05-A93B-89089F3E3E9D} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName={pf}\{#MyAppName} 
DefaultGroupName={#MyAppName} 
OutputBaseFilename=setup 
Compression=lzma 
SolidCompression=yes 

[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 

[Tasks] 
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 

[Files] 
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "D:\softwares\winscp512setup.exe"; DestDir: "{app}"; Flags: ignoreversion 

[Icons] 
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 

[Run] 
Filename: "{app}\winscp512setup.exe"; Description: "Before launching this application you need to install xxx this ,so please install this and then launch"; Flags: nowait shellexec skipifsilent 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 

你可以找到蟒蛇是否通過使用以下方式處理這些

1.Direxists功能安裝或沒有(在這裏,您可以檢查的程序文件是否存在蟒蛇目錄與否)

2。 filexists功能(這個你可以檢查Python文件是存在於用戶系統)

3.Query與蟒蛇註冊表鍵值名(HKEY_LOCAL_MACHINE \ SOFTWARE \ Python)的註冊表..

然後,如果你得到的結果是積極的,那麼去你的應用程序安裝其他明智的安裝python for windows,然後運行你的應用程序。 你需要在文件部分的幫助下打包python for windows安裝程序。 您必須使用inno setup的[Code]部分,才能使用上述功能。

請參閱Pascal腳本:在Inno Setup的幫助文件支持功能..

+1

謝謝你的建議,它真的幫助。對我來說更有用的提示是如何搜索python的resistry,而不是代碼。 – dileepVikram

+0

不客氣! – Gangadhar

+0

代碼工作正常,但它產生一個名爲DefaultDirName的默認目錄,每當我執行代碼時,我也無法刪除代碼,因爲DefaultDirName,appName等是必需的。你有這個解決方案嗎? – dileepVikram

4

如果你的程序依賴於許多第三方軟件包,而不僅僅是Python標準庫,那麼它可能會更容易使用cx_Freezepy2exe凍結它然後使用Inno Setup將所有文件打包到安裝程序中。

相關問題