2013-10-10 74 views
2

我創建使用MVC 3的Web應用程序,它就像這個這個從MVC應用程序

enter image description here

控制器/動作遊戲應用程序就像是\首頁\遊戲

我想創建EXE要知道是否有可能將此MVC應用程序轉換爲EXE文件,因此,任何用戶都可以在他的PC上運行它。我知道我們可以爲Windows應用程序創建EXE文件,Web App有可能嗎?

+0

您可以創建Windows8應用程序:) –

+1

不,您不能將MVC應用程序轉換爲可執行文件。對於可執行文件,請使用WinForms或Console應用程序。 –

+1

我會再做一遍。我認爲你完全錯了方向 –

回答

4

不直接。

你可以做的是使用單XSP有一個簡單的嵌入式Web服務器,您可以放入一個.exe文件,然後將啓動一個端口XY一個Web服務器,並打開一個網絡瀏覽器與

http://localhost:xy/optional-virtual-directory/Home/Game

您還需要將webserver-assembly localcopycopy到您的Web應用程序的/ bin目錄中,以使其無需任何安裝即可正常工作。

您還需要對所有必需的ASP.NET MVC-3程序集進行localcopy(因爲它們最有可能不是默認安裝的)。
而且您需要添加1.0.0版以防萬一有人在本地安裝了MVC-4。

即便如此,它還需要在目標計算機上安裝.NET Framework 4.0(或至少3.5?)。

下面的鏈接到最新的穩定,XSP來源:
http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2

可以包括壓縮的Web應用程序中嵌入的資源,並使用解壓庫將其解壓縮到一個可寫目錄中,您的設置您的網絡服務器的根目錄。

確保您的解壓縮庫確實正確解壓JavaScript文件,因爲Microsoft提供的windows-server windows-explorer-integrated-zip-handling實用程序沒有正確解壓縮它們(可能取決於服務器版本和安全設置/策略)。

static void Main() 
{ 

    int iPort = 8080; // If admin rights it requires, wrong it is ;) 
    iPort = 30080; // Damn ! I still no haz no admin rightz ! 


    string strBasePath = @"D:\UserName\documents\visual studio 2010\Projects\EmbeddableWebServer\TestApplication"; 

    string strCurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(strCurrentDirectory); 
    //strBasePath = System.IO.Path.Combine(di.Parent.Parent.Parent.FullName, "TestApplication"); 
    strBasePath = System.IO.Path.Combine(di.Parent.Parent.Parent.FullName, "TestMvcApplication"); 

    //EmbeddableWebServer.cWebSource WebSource = new EmbeddableWebServer.cWebSource(System.Net.IPAddress.Any, iPort); 
    Mono.WebServer.XSPWebSource ws = new Mono.WebServer.XSPWebSource(System.Net.IPAddress.Any, iPort); 

    // EmbeddableWebServer.cServer Server = new EmbeddableWebServer.cServer(WebSource, strBasePath); 
    Mono.WebServer.ApplicationServer Server = new Mono.WebServer.ApplicationServer(ws, strBasePath); 

    Server.AddApplication("localhost", iPort, "/", strBasePath); 
    Server.Start(true); 


    System.Diagnostics.Process.Start("\"http://localhost:" + iPort.ToString() + "\""); 

    Console.WriteLine(" --- Server up and running. Press any key to quit --- "); 
    Console.ReadKey(); 

    Server.Stop(); 
} // End Sub Main 

我使用此代碼來解決丟失的區域設置處理。

using System; 
using System.Collections.Generic; 
using System.Text; 


namespace System 
{ 


    public class Locale 
    { 
     // http://msdn.microsoft.com/en-us/library/441722ys(v=vs.80).aspx 
     // #pragma warning disable 414, 3021 

     public static string GetText(string message) 
     { 
      return message; 
     } 


     public static string GetText(string format, params object[] args) 
     { 
      return string.Format(format, args); 
     } 


     /* 
     public static object GetResource(string name) 
     { 
      return name; 
     } 
     */ 


    } // End Class Locale 


} // End Namespace System 
+0

我會試試看...謝謝 –

+0

@Anil:從我的項目中添加了簡單的示例代碼:)順便說一句,你還需要Mono.Posix和Mono的源代碼。安全性,你可能需要編輯它們一點。 –

+0

如果你需要在客戶端機器上安裝Web服務器,**你做錯了**。就像一些主要品牌的通用遙控器一樣,通過Java客戶端編程到安裝在您的機器上的Java Web服務器,並花費兩分鐘在高端機器上啓動並佔用CPU和內存,所有這些都顯示一個嚮導四頁。不要這樣做。如果您想將其重新分配爲可執行文件,請在WinForms中重新創建遊戲。如果你想根據這個答案distrubite,它將是〜50 MB大。你不能只是**在某個地方主持**網站,並給人們的網址? – CodeCaster