2013-06-27 43 views
1

我想知道如何在使用NSIS安裝文件之前運行某些操作。如何在安裝文件之前運行某些內容?

我知道.onInit函數。該功能在安裝程序第一次啓動時運行。這不是我想要的。我想在用戶單擊安裝按鈕之後但在文件實際安裝之前運行某些內容。

更具體一點。我有一個Windows服務。當安裝程序升級Windows服務時,我需要它停止服務 - 但只有在用戶致力於安裝時 - 不是在首次啓動安裝程序時。然後它可以升級文件並最終(重新)啓動服務。這似乎應該是一個共同的要求,但我一直無法找到任何東西。

如果它很重要我使用MUI而不是經典。

回答

3

所有部分都在instfiles網頁上執行並作爲源.nsi所以你可以添加另一個(隱藏)一節,他們以相同的順序執行:

Section 
# Do service stuff... 
SectionEnd 

Section "Required Files" 
File xyz.abc 
SectionEnd 

Section 
# Do service stuff... 
SectionEnd 
+0

工作正常!我在所有其他部分之上創建了一個名爲'-Pre'的新節。最後我已經有一個叫'-Post'的。 – davidpricedev

0

正如安德斯說 - 創造無形(隱藏)部分,這是您腳本中所有部分的第一部分,並停止服務。

當其他部分將被執行時,服務將被停止。

提示:也許你應該等待幾秒鐘讓服務管理員有時間停止服務。

+0

如果您使用'ExecWait' :),無需弄清楚如何等待 – davidpricedev

相關問題