程式打包 之 NSIS指令碼
Function .onInit MessageBox MB_YESNO "This will install My Program. Do you wish to continue?" IDYES gogogo Abort gogogo: FunctionEnd
Abort函式在回撥函式中有特殊的含義,每一個回撥函式中都有不同的含義,具體要參考回撥函式的說明。
指令碼的使用
程式碼邏輯:
順序、條件、迴圈是現代程式語言的三個基本的結構,在該指令碼中,你可以使用StrCmp、IntCmp、IfErrors、Goto等來對應這些結構。但是有更好的方法來實現,就是使用LogicLib。作為對比:
StrCmp $0 'some value' 0 +3 MessageBox MB_OK '$$0 is some value' Goto done StrCmp $0 'some other value' 0 +3 MessageBox MB_OK '$$0 is some other value' Goto done # else MessageBox MB_OK '$$0 is "$0"' done:
上面這段程式碼是未使用LogicLib的程式碼,再看看使用LogicLib的程式碼:
${If} $0 == 'some value' MessageBox MB_OK '$$0 is some value' ${ElseIf} $0 == 'some other value' MessageBox MB_OK '$$0 is some other value' ${Else} MessageBox MB_OK '$$0 is "$0"' ${EndIf}
相比之下,後者就顯得結構清晰、簡潔。
要使用LogicLib只需要在指令碼前新增引用:
!include LogicLib.nsh
變數:
你可以使用Var命令來定義你的變數,這個變數是全域性的,你可以在任何段和函式中使用。
Var BLA ;定義一個變數BLA Section bla StrCpy $BLA "123" ;這裡你就可以使用BLA變數,這裡要在BLA前面加上$字首。 SectionEnd
另外還有一個變數堆疊,你可以使用push、pop命令來操作這些變數。
對於共享模式的程式碼,一共有20個註冊變數($0-$9, $R0- $R9),這些變數不需要申明,不過你最好在使用之前儲存初值,使用完之後恢復初值。還有一點就是這些變數的使用要按照堆疊的方式,first-in-last-out。
Function bla Push $R0 Push $R1 ...code... Pop $R1 Pop $R0 FunctionEnd
除錯指令碼:
除錯程式最好的辦法就是列印輸出。NSIS指令碼的除錯也是使用列印的方法:
MessageBoxs和DetailPrint。要想得到所偶變數的值可以使用外掛DumpState。
預設情況下,所有的操作都會解除安裝Windows的日誌中,你可以在windows日誌檢視。
指令碼的執行:
當用戶執行安裝或者解除安裝程式的時候(似乎就這兩種情況了),頁Page會按照它們在指令碼檔案中的順序出現。除了段中的程式碼,還有回撥函式也可能在段的程式碼執行之前先執行,比如說.onInit函式將會在安裝程式所有頁面出現之前先被執行。還有頁Page的回撥函式。
編譯命令:
編譯命令在你的計算機上編譯指令碼的時候執行。這個可以被用來做條件編譯、包含標頭檔案、執行應用程式、改變工作目錄等。最常用的就是define定義,define是編譯期常量,你可以定義你的產品版本,並在指令碼中使用。例如:
!define VERSION "1.0.3" Name "My Program ${VERSION}" OutFile "My Program Installer - ${VERSION}.exe"
另一個用法是巨集macro。使用巨集定義對於一般程式設計師來說應該不陌生,它可以簡化程式碼的編寫,其實意義上類似於函式。巨集也是在編譯器替換、插入、執行的。比如下面的定義:
!macro MyFunc UN Function ${UN}MyFunc Call ${UN}DoRegStuff ReadRegStr $0 HKLM Software\MyProgram key DetailPrint $0 FunctionEnd !macroend !insertmacro MyFunc "" !insertmacro MyFunc "un."
巨集可以幫助你避免寫重複的程式碼,上面這兩個!insertmacro語句插入了兩個函式,一個用來安裝程式時使用MyFunc,一個在解除安裝程式時使用un.MyFunc。兩個函式是相同的。
編譯
寫好指令碼之後就是編譯指令碼了,makeNSIS.exe就是NSIS的編譯器,它吃進指令碼吐出安裝程式。當然你可以使用整合的編譯環境比如說HM NIS Edt,編譯的時候會檢查指令碼的語法等,並給出警告和錯誤提示。也可以在Linux、BSD或者Mac OS X上編譯Windows程式,具體看NSIS的使用者手冊。
介面
Modern UI不僅是一個自定義資原始檔,而且還提供了大量的介面元素。
外掛
其實就是dll檔案,這些檔案一般用C/C++,Delphi或者其他語言編寫,作為NSIS的一個強大的擴充套件。
引入外掛的語句:
DLLName::FunctionName "parameter number 1" "parameter number 2" "parameter number 3"
每一個外掛根據不同的引數都有不同的要求,有些不需要引數,有些你可以給出很多引數:
nsExec::ExecToLog '"${NSISDIR}\makensis.exe" /CMDHELP' InstallOptions::dialog "$PLUGINSDIR\test.ini" NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0
在NSIS的安裝目錄下有一個外掛目錄,NSIS會預設搜尋這個目錄、並列出可用的函式,當然你也可以使用!addplugindir命令來引入新的外掛目錄。
NSIS的釋出版已經自帶了一些外掛,當然你也可以自己寫外掛,NSIS手冊上有介紹。
2. 命令列用法
MakeNSIS用法
makensis [option | script.nsi | - [...]]
基本上現在我沒有用到命令列,現在直接使用整合環境。
安裝、解除安裝用法
可以設定靜默安裝、解除安裝。設定安裝在預設的安裝目錄等。
3. 指令碼說明
指令碼檔案格式
指令碼檔案只是一個寫了指令碼語句的文字檔案。
命令
command [引數...]
比如:File "MyFile"
註釋
以#或者;開頭語句就是註釋語句,也可以使用C風格的註釋。比如:
; Comment # Comment # Comment \ Another comment line (see `Long commands` section below) /* Comment Comment */ Name /* comment */ mysetup File "myfile" ; Comment
外掛
plugin::command [引數...] 比如:
nsExec::Exec "MyFile"
數字
NSIS指令碼支援三種進位制的數字,八進位制,十進位制,十六進位制。
顏色必須使用十六進位制。例如:
IntCmp 1 0x1 lbl_equal SetCtlColors $HWND CCCCCC
字串
如果字串中有空白字元,要使用雙引號包起來:
MessageBox MB_OK "Hi there!"
一共可以使用單引號、雙引號、反單引號三種,並且可以巢狀。你也可以使用$\符號來跳出引號。
MessageBox MB_OK "I'll be happy" ; this one puts a ' inside a string 列印:I'll be happy
MessageBox MB_OK 'And he said to me "Hi there!"' ; this one puts a " inside a string 列印:And he said to me "Hi there!"
MessageBox MB_OK `And he said to me "I'll be happy!"` ; this one puts both ' and "s inside a string 列印: And he said to me "I'll be happy!"
MessageBox MB_OK "$\"A quote from a wise man$\" said the wise man" ; this one shows escaping of quotes 列印:"A quote from a wise man" said the wise man
變數
變數以$開頭,定義及用法例如:
Var MYVAR StrCpy $MYVAR "myvalue"
長命令
類似於C類語言,可以使用反斜槓(\)來換行繼續上一行的語句。這個對於命令和註釋都適用。
CreateShortCut "$SMPROGRAMS\NSIS\ZIP2EXE project workspace.lnk" \ "$INSTDIR\source\zip2exe\zip2exe.dsw"
# A comment \ still a comment here...
配置檔案
如果在配置目錄下存在一個"nsisconf.nsh"檔案,預設它將會在所有指令碼之前包含進來(除非/NOCONFIG),Windows平臺上這個配置目錄就是makensis.exe所在目錄。其他平臺下這個值在安裝時期設定並且預設值是$PREFIX/etc/。
變數
使用者自定義變數
Var命令,可以使用Var命令定義自定義的變數,這樣定義出來的變數是全域性的,且不論你是在段中還是在函式中定義。
但是如果在段或者是函式中定義變數要加上/GLOBAL字首:
Var example Function testVar Var /GLOBAL example2 ;看這裡的定義 StrCpy $example "example value" StrCpy $example2 "another example value" FunctionEnd
其他可寫的變數
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9
這些變數可以像自定義變數那樣使用,不過這些變數一般在共享函式和巨集裡面使用。正如篇前所說,最好在使用的過程中記錄和重新裝載這些變數的初值。這些變數也可以用來和外掛通訊,因為外掛也可以使用這些變數。
$INSTDIR
安裝目錄,可以用StrCpy、ReadRegStr、ReadINIStr來修改。比如.onInit函式需要做一個更高階的安裝檢測。
需要注意的是在解除安裝程式碼中,$INSTDIR所表示的目錄正是解除安裝檔案所在目錄。我們並沒有必要保證這個值要和安裝程式中的一致,比如說,你把解除安裝檔案寫在了#WINDIR中,並且使用者沒有移動它,那麼寫在檔案中的$INSTDIR就是$WINDIR。如果你把解除安裝檔案放在了其他位置,那麼你最好把這個路徑記錄下來,並在解除安裝的時候可以讀取,以便解除安裝程式。
$OUTDIR
當前的輸出目錄,使用SetOutPath,StrCpy、ReadRegStr、ReadINIStr等修改。
$CMDLINE
安裝程式的命令列。
$LANGUAGE
標識當前使用的語言的ID,例如English是1033,你可以在.onInit中修改它。
常量
常量也可以用在安裝屬性設定中。
需要注意的是,並非所有常量都可以執行在所有作業系統上,比如$CDBURN只能工作在Windows XP及以上版本中。
$PROGRAMFILES, $PROGRAMFILES32, $PROGRMAFILES64
預設安裝目錄是C:\Program Files,但是這個會在執行時檢測,在Windows x64平臺上,$PROGRAMFILES、$PROGRAMFILES32表示C:\Program Files (x86),$PROGRAMFILES64表示C:\Program Files。
還有很多這樣的常量,這裡就不一一列舉了,可以檢視NSIS使用者手冊。這些變數就是提供了設定系統中一些引數的簡單方式。
字串中的常量
$$:表示$
$\r:表示\r
$\n:表示\n
$\t:表示\t
標籤
標籤用於Goto命令、或者是一些分支結構(IfErrors, MessageBox, IfFileExists, StrCmp)。標籤必須位於段或者函式內部。並且標籤是區域性的,也就是段或者函式的內部才可以訪問。定義方法比如:
MyLabel:
標籤的命名不能以 -、+、!、$、或者0-9開頭,使用標籤的時候要注意空字串("")和0都表示下一個指令的意思,以一個點號(.)開頭的標籤表示擁有全域性作用域,意思是你可以在任何函式或者段中跳到這個標籤。但是你不能從安裝程式碼跳到解除安裝程式碼,反之亦然。
相對跳轉
你可以在可以使用標籤的地方使用相對跳轉。用法是如下:+1表示跳轉至嚇一跳指令;+2表示忽略下一條指令、直接跳轉到下下一條命令;-2表示往回跳兩條指令,+10表示忽略後面的9跳指令、直接跳至第10條指令。
指令就是安裝程式執行時的所有命令,MessageBox、Goto、GetDllVersion、FileRead、SetShellVarContent都是指令。AddSize、Section、SectionGroup、SectionEnd、SetOverWrite,Name、SetFont、LangString、這些都不是指令、因為它們在編譯時執行。
Goto +2 MessageBox MB_OK "You will never ever see this message box" MessageBox MB_OK "The last message was skipped, this one should be shown"Goto +4 MessageBox MB_OK "The following message will be skipped" Goto +3 MessageBox MB_OK "You will never ever see this message box" Goto -3 MessageBox MB_OK "Done"注意如果想對跳轉後面有插入巨集,那麼巨集不會被視為一條指令,因為巨集在跳轉執行之前會被展開。這一點上巨集的使用類似C類語言。比如:
!macro relative_jump_test MessageBox MB_OK "first macro line" MessageBox MB_OK "second macro line" !macroend Goto +2 !insertmacro relative_jump_testGoto將會跳轉到"second macro ine"。
頁 Pages
每一個非靜默安裝的NSIS安裝程式,都有一組安裝頁。這個頁可以是NSIS內建的頁,也可以是使用者的函式建立的自定義頁。
使用指令碼你可以控制頁的順序、顯示和行為,你可以跳過頁、把他們畫成白板、強制使用者停留在某個頁面直到滿足一定的條件,顯示一個Read me頁、顯示自定義的輸入頁面等等。
這裡有兩個和頁相關的命令,Page和UninstPage。第一個命令新增一個頁到安裝程式,第二個新增一個頁到解除安裝程式。還有一個命令PageEx,他允許你新增一個頁,並附加一些選項。這個命令可以讓你把指定的頁替換掉預設的頁。
順序
頁的順序就是Page、UninstPage、PageEx在指令碼中出現的順序,比如說:
Page license Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles上面的程式碼,將會首先顯示一個許可證頁、接著是元件頁、接著是選擇安裝目錄頁、接著是執行的段的安裝日誌頁。解除安裝程式將會首先顯示一個解除安裝確認頁、接著是解除安裝日誌頁。
為了向後相容,如果沒有寫任何安裝程式的Page命令指令碼的話,以下頁面將會自動新增:license許可證頁(如果指定LicenceText和LicenceData的話),components元件頁(如果ComponentText指定了並且有超過一個可視段),directory目錄頁(如果DirText指定了的話)和安裝日誌頁。如果沒有解除安裝頁命令的話,下面的解除安裝頁將會被新增:解除安裝確認頁和解除安裝日誌頁。這些方法現在已經被棄用,推薦使用頁。
頁選項
每一個頁都有一組資料定義了頁長什麼樣子,有什麼動作。下面描述了每一種頁使用那些資料以及如何設定。回撥函式不會再本段描述。
下面這個列表列出了命令如何影響具體的頁面型別,除非特別說明,下面的命令可被用於PageEx塊的內部和外部,如果用在PageEx塊內部,它們僅僅會影響用PageEx設定的當前頁,否則它們會影響所有頁面的預設行為。
License page
- LicenseText
- LicenseData
- LicenseForceSelection
Components selection page
- ComponentText
Directory selection page
- DirText
- DirVar - can only be used in PageEx
- DirVerify
Un/Installation log page
- DetailsButtonText
- CompletedText
Uninstall confirmation page
- DirVar - can only be used in PageEx
- UninstallText
回撥函式
每個內建頁都有三個回撥函式:pre-function、show-creation和leave-function。pre-function在頁建立之前呼叫,show-creation正好在頁建立之後且在頁顯示之前呼叫,leave-funtion在使用者點選下下一步按鈕之後並還停留在當頁的時候呼叫。
pre-function允許你使用Abort跳過頁
show-function允許你使用CreateFont、SetCtlColors、SendMessage和其他函式修改使用者介面
leave-function允許你使用Abort函式強制使用者停留在當頁
一個自定義頁僅有兩個回撥函式,一個是強制性的建立頁函式,一個是leave-function,就像內建頁的回撥函式一樣。例子:
Page license skipLicense "" stayInLicense Page custom customPage "" ": custom page" Page instfiles Function skipLicense MessageBox MB_YESNO "Do you want to skip the license page?" IDNO no Abort no: FunctionEnd Function stayInLicense MessageBox MB_YESNO "Do you want to stay in the license page?" IDNO no Abort no: FunctionEnd Function customPage GetTempFileName $R0 File /oname=$R0 customPage.ini InstallOptions::dialog $R0 Pop $R1 StrCmp $R1 "cancel" done StrCmp $R1 "back" done StrCmp $R1 "success" done error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1" done: FunctionEnd
安裝解除安裝 頁 [Uninst]Page
custom [creator_function] [leave_function] [caption] [/ENABLECANCEL] OR internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]
新增一個安裝/解除安裝頁,其中internal_page_type可以是:
license - 許可證頁
componenets - 元件選擇頁
directory - 目錄選擇頁
instfiles - 執行段中的安裝頁
uninstConfirm - 解除安裝的確認頁
安裝的最後一頁,有一個取消按鈕用來阻止確認。如果要這樣的話,那麼就要使用/ENABLECALCEL
擴充套件頁 PageEx
[un.](custom|uninstConfirm|license|components|directory|instfiles)
新增一個安裝頁,或者解除安裝頁(如果使用un.字首),每一個PageEx都必須有一個PageExEnd與之對應。在這個頁中你可以設定關於這個頁(不影響其他頁)的選項,如果這些選項沒有設定,那麼選項會使用外部PageEx的設定,如果什麼都沒有,那麼會使用預設值。設定二級標題的話使用Caption或者SubCaption來設定預設值。要同PageEx一同設定回撥函式的話,使用PageCallbacks。例子:
PageEx license LicenseText "Readme" LicenseData readme.rtf PageExEnd PageEx license LicenseData license.txt LicenseForceSelection checkbox PageExEnd
擴充套件頁結束 PageExEnd
結束一個PageEx塊
頁回撥函式 PageCallbacks
([creator_function] [leave_function]) | ([pre_function] [show_function] [leave_function])
設定用PageEx定義的頁,只能在一個PageEx塊內部使用。例子:
PageEx license PageCallbacks licensePre licenseShow licenseLeave PageExEnd
段 Sections
一個NSIS安裝程式都有一個或多個段組成,每個段都按照下面的規則進行建立、修改、結束。
每個段包含0個或多個指令
每個段根據安裝程式執行的順序進行,如果設定了ComponentText,使用者可以使每個可見的段有效或者失效
如果一個段的名字是“Uninstall”,或者有一個“un.”的字首,就是一個解除安裝段
段命令
AddSize
size_kb 告訴安裝程式當前段需要一個額外的"size_kb"千位元組硬碟空間,這個只在一個段中有效,在外部一個段中或者函式中式無效的。例子:
Section AddSize 500 SectionEnd
段
[/o] [([!]|[-])section_name] [section_index_output]
開始一個段的定義,如果段名字為空、或者忽略了、或者以一個"-"開頭,那麼將會隱藏這個段,並且使用者也不能禁用它,如果設定了section_index_output,這個引數就是!define標識的段序列(這個可以用SectionSetText設定)。如果段名字以“!”開頭,那麼段將會用粗體顯示。如果設定了/o,那麼段預設不會被選中。
Section "-hidden section" SectionEnd Section # hidden section SectionEnd Section "!bold section" SectionEnd Section /o "optional" SectionEnd Section "install something" SEC_IDX SectionEnd
要訪問段序號,必須使用大括號,並且指令碼程式碼必須位於段的後面。
Section test1 sec1_id SectionEnd Section test2 sec2_id SectionEnd Function .onInit SectionGetText ${sec2_id} $0 MessageBox MB_OK "name of ${sec2_id}:$\n$0" # will correctly display 'name of 1: test2' FunctionEndFunction .onInit SectionGetText ${sec2_id} $0 MessageBox MB_OK "name of ${sec2_id}:$\n$0" # will incorrectly display 'name of ${sec2_id}: test1' # plus a warning stating: # unknown variable/constant "{sec2_id}" detected, ignoring FunctionEnd Section test1 sec1_id SectionEnd Section test2 sec2_id SectionEnd
段結束 SectionEnd
這個表示一個段的結束
段型別 SectionIn
insttype_index [insttype_index] [RO]
這個命令指定當前的段預設屬於哪一個安裝型別,你也可以為一個段指定多個SectionIn。如果你指定了RO引數,那麼這個段就是隻讀的,使用者不能修改它的狀態,第一個InstType標號為1,下一個是2,以次類推。
InstType "full" InstType "minimal" Section "a section" SectionIn 1 2 SectionEnd Section "another section" SectionIn 1 SectionEnd
段組 SectionGroup
[/e] section_group_name [index_output]
這個命令插入一個段組,並且必須以SectionGroupEnd結束。它應該包含至少一個段,如果段組名字以“!”開頭,那麼它將會以粗體的形式顯示。如果設定/e,那麼預設會展開段組,如果指定了index_output,這個引數是用!define宣告的段序號section index。如果名字以“un.”開頭,那麼這是一個解除安裝段組。
SectionGroup "some stuff" Section "a section" SectionEnd Section "another section" SectionEnd SectionGroupEnd
段組結束 SectionGroupEnd
相關推薦
程式打包 之 NSIS指令碼
這段時間負責公司的程式的打包,於是就學習了一下NSIS的指令碼,結果是英文的,所以就有了翻譯一下,順便學習一下的想法。
編寫NSIS程式打包指令碼,只需要用一個文字編輯器,最好是帶有行號的,這樣會有助於讀懂編譯錯誤提示。下面開始學習打包。
1. NSIS指令碼的基本結構
instal
Python程式打包之PyInstaller
1、背景說明
【Python版本】Python 2.7.14
【系統平臺】Windows 7
【優缺點描述】據說PyInstaller 比較慢,但是PyInstaller打包出來的exe簡潔(就一個檔案),沒有一堆的dll和配置檔案等。
2、安裝方式
pip install PyInstall
歸一化二階系統的階躍響應之matlab GUI+程式打包實現
歸一化系統的二階階躍響應之matlab GUI+程式打包實現
設計程式效果展示 1.1.list選項:選擇第一項效果展示 1.2.list選項:選擇第二項效果展示 1.3.list選項:選擇第三項效果展示 1.4.list選項:選擇第四項效果展示
設計思想 為了研究
少說話多寫程式碼之Python學習066——python程式打包01 編譯安裝
程式開發完成後,我們需要部署給使用者使用,一般我們都會將其打包。比如大家在使用windows系統時,安裝QQ、微信、除IE外的各種瀏覽器、看視訊軟體、word等,都會先下載一個安裝包,一般是都是一個EXE或者有多個資料夾的檔案,裡面包含了一個exe。我們點選exe後,按照提示一步一步,往下安裝。
使用NSIS指令碼嚮導進行打包
nsis使用:
啟動NSIS程式主介面,選擇“視覺化指令碼編輯器(VNISEdit)”選單,開始製作自己的安裝包
選擇“使用指令碼嚮導建立新的指令碼檔案”,確定
進步指令碼嚮導,下一步
第一步,這裡填寫應用程式的一些基本資訊,下一步
第二步,這裡是選擇安裝包
雜記(3)chrome擴充套件程式開發之在目標頁面執行JS指令碼
一、背景說明在雜記(2)中,我們寫了JS指令碼在chrome瀏覽器的開發者模式console頁面執行,用於搶bus票,但這個指令碼有個弊端是當頁面重新整理後,指令碼會自動清除,無法再執行,如何解決呢?我們可以開發一個chrome外掛,啟動這個外掛,當chrome瀏覽器一開啟目
Linux 下qt 程式打包釋出(使用linuxdelpoyqt ,shell 指令碼)
linux qt 程式打包釋出
1.linuxdeployqt 安裝
最簡單的方法直接下載編譯好的 linuxdeployqt-x86_64.AppImage檔案,將其改名字為linuxdeployqt,並chmod a+x,然後複製到 /usr/loc
小程式開發之指令碼語言WXS
WXS
WXS(WeiXin Script)是小程式的一套指令碼語言,結合 WXML,可以構建出頁面的結構。 注意
wxs 不依賴於執行時的基礎庫版本,可以在所有版本的小程式中執行。
wxs 與 javascript 是不同的語言,有自己的語法,並不和 javasc
關於NSIS指令碼操作靜默安裝第三方程式+判斷電腦位數
在NSIS指令碼中,呼叫外部程式的方法有ExecShell以及ExecWait:
ExecShell
使用 ShellExecute [譯者注: Windows 的外殼關聯] 執行指定的程式。注意:
java程式釋出之jre篇 java程式打包成exe可執行安裝包以便安裝程式
Java開發程式,釋出時總要考慮的問題就是怎麼在使用者的機器上裝好JRE。要考慮的問題很多:使用者有沒有能力獨自安裝JRE,使用者已有的 JRE 和我們需要的版本是不是一致,會不會出現版本問題,等等。使用.NET要考慮的問題就少些。現在.NET CLR似乎已經很普及了,看
Qt之程式打包(使用windeployqt.exe查詢依賴庫)
Qt 官方開發環境使用的動態連結庫方式,在釋出生成的exe程式時,需要複製一大堆 dll,如果自己去複製dll,很可能丟三落四,導致exe在別的電腦裡無法正常執行。因此
Qt 官方開發環境裡自帶了一個工具:windeployqt.exe。以官方
Qt 5.7.0+Min
python學習記錄之---------PYQT5做工具(3)將python程式打包成exe檔案
工具/版本(1)安裝環境:Windows7 64bit(2)使用版本Python3.6(3)pyqt5python檔案打包成exe格式,需要用到自帶的模組 pyinstaller一、pyinstaller安裝開啟cmd,輸入pip install pyinstaller回車,
Unity資源打包之Assetbundle
nas rar 啟用 大致 ebp 掛載 href 交叉 bundle
本文原創版權歸 csdn janeky 全部。轉載請具體註明原創作者及出處,以示尊重。
作者:janeky
原文:http://blog.csdn.net/janeky/article/detail
2018第一發:記一次【Advanced Installer】打包之旅
4.0 config文件 cli 簡單 官網 class 用法 process file 一、前言
2017年最後幾天,你們都高高興興的跨年,博主還在加班制作.net安裝包。因為年前要出來第一版的安裝包,所以博主是加班加點啊。本來想用VS自帶的制作工具,不過用過的人都知道
4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿之路:第三十六章
1.專案結構
-JDK 1.8
-SpringBoot 2.0.6
&nbs
QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式)
QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式)
最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。我使用的QT版本是。我的電
Python程式打包成exe的一些坑
今天寫了一個專案,Python專案,需要在win7上跑起來,我想,這不是簡單的不行麼,直接上Pyinstaller不就完了?
但是後來,我發覺我真是too young too simple。
為什麼這麼說呢,因為我是堅定的Linux黨,沒Windows!!!!!這就說明什麼呢,當你在linux上Pyins
小程式學習之旅----open-data web-view 以及 canvas、map
<open-data type="userAvatarUrl"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>
<view></view>
小程式學習之旅----圖片image媒體元件camera、audio、video、live-player、live-pusher
<!--pages/image/image.wxml-->
<text>這是一個image元件</text>
<!--
<image src='../../images/0.jpg'></image>
<image src='
小程式學習之旅---表單元件 picker picker-view 實現日期 區域 聯動選擇
Page({
/**
* 頁面的初始資料
*/
data: {
cityList: ['北京', '上海', '深圳', '廣州'],
cityIndex: 1,
time: '17:01',
date: '2018-6-28',