2013-06-21 69 views
1

我最近在C#.NET中開發了一個應用程序,現在我必須創建相應的設置。我需要在設置階段執行特定的邏輯,因此我選擇使用NSIS。特別是我需要在我的應用程序的.config文件中寫入一些信息。我試圖使用基於我在這裏找到的nsisXML.dll宏:http://nsis.sourceforge.net/Talk:NsisXML_plug-in_%28by_Wizou%29[^],但它不起作用!NSIS配置文件

編譯器不給任何錯誤,但是當我啓動安裝我獲取Windows消息:「的Setup.exe已停止工作 - Windows正在檢查一個解決proble ...」

所以我不知道什麼可能會導致錯誤!

如果有人使用NSIS在.config文件中寫入不同的解決方案,我很樂意閱讀它。謝謝!!

+0

你是否在使用帶有非Unicode插件的Unicode NSIS? – Anders

回答

1

最終我決定編寫C#代碼來管理配置文件。 因此,我在C#中編寫了一個.dll文件,然後在我的NSIS腳本中使用它作爲ReserveFile,使用CLR NSIS(http://nsis.sourceforge.net/Call_.NET_DLL_methods_plug-in[^])插件,該插件允許在託管的.NET DLL中調用方法。 所以我在後面的代碼中寫了一個NSIS腳本中的函數: Collapse |複製代碼

Function WriteConfig 
InitPluginsDir 
    SetOutPath "${NSISDIR}\Plugins\" 
    File "${NSISDIR}\Plugins\MyNETdll.dll" 
CLR::Call /NOUNLOAD "MyNETdll.dll" "Namespace.Class" "Method-To-Write_in-Config" 3 "Config path" "Key" "Value" 
CLR::Destroy 
FunctionEnd 

其中「3」是方法接受的參數數量,後續的字符串是參數本身。

以這種方式,無論用C#編寫的任何方法都可以從NSIS腳本中調用!