短篇小說
大家好,NSIS遞歸文件日誌
有旅行遞歸目錄與NSIS在編譯時間的方法嗎?
感謝
說來話長
大家好,
我試圖創建一個NSIS安裝一個軟件,我發展。我們設置的構建系統創建一個文件夾,其中包含在Windows上運行該軟件所需的一切(dll,exes,圖像,庫,示例等)。該文件夾有+400個文件和文件夾。使用HM NIS Edit,可以生成安裝所有內容所需的「文件」和「SetOutPath」序列,但只是巨大,醜陋,如果添加或刪除了某些文件,則必須手動更改腳本。
所以......我們刪除「文件」和「SetOutPath」和剛剛添加的生成的序列:
File /r "C:\path\to\output\dir"
它的偉大工程......但現在我們有一個卸載程序問題,因爲我們不能這樣做:
RMDir /r $INSTDIR
因爲是危險的(如此處所述:http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.1.8)。
所以,我們試圖實現給那裏的建議:在卸載http://nsis.sourceforge.net/Uninstall_only_installed_files
該解決方案創造在哪裏NSIS寫的所有的「文件」和「SetOutPath」操作日誌,因此它可以回退(刪除) 。問題是包含的宏不支持「File」的遞歸選項。
我試圖實現一個遞歸版本,在文件夾上遞歸遍歷,但是我覺得我做錯了(當然,我敢肯定:P):
!include "RecFind.nsh"
Section "Principal" SEC01
${SetOutPath} "$INSTDIR"
SetOverwrite try
${RecFindOpen} "..\executable" $R0 $R1
DetailPrint "Looking into directory: $R0"
${SetOutPath} "$R0"
${RecFindFirst}
DetailPrint "Looking file: $R0\$R1"
${File} "$R0" "$R1"
${RecFindNext}
${RecFindClose}
使用這http://nsis.sourceforge.net/RecFind:_Recursive_FindFirst,_FindNext,_FindClose 但我認爲,只在安裝時間工作。
我到目前爲止發現的解決方案是創建一個安裝腳本,其中包含一個用作模板的NSIS文件(帶有「File」和「SetOutPath」列表的一些佔位符標記),一個Python腳本輸出目錄,並創建所需的「文件」和「SetOutPath」的序列,然後寫入最終NSIS腳本...但我真的不喜歡它:S
所以我的問題是:
有一種在編譯時使用NSIS遞歸傳遞目錄的方法?
(或者說,我怎麼能只用NSIS實現這一目標?)。
在此先感謝。
親切的問候