2009-01-14 23 views

Trả lời

16

Thực tế bạn có thể sử dụng NGEN và clickone, nhưng bạn sẽ cần chạy NGEN sau khi cài đặt bấm chuột đã xảy ra, vì NGEN là một phần của cài đặt .NET (cho 3.5 bạn nên tham khảo cài đặt 2.0).

Dưới đây là một ví dụ, tôi nghĩ rằng đó là đủ generic để bạn có thể sử dụng nó mà không thay đổi hoặc làm thay đổi rất ít để mã (trừ các cuộc gọi đến hình thức của bạn):

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun) 
     { 

      string appPath = Application.StartupPath; 
      string winPath = Environment.GetEnvironmentVariable("WINDIR"); 

      Process proc = new Process(); 
      System.IO.Directory.SetCurrentDirectory(appPath); 

      proc.EnableRaisingEvents = false; 
      proc.StartInfo.CreateNoWindow = false; 
      proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 

      proc.StartInfo.FileName = winPath + @"\Microsoft.NET\Framework\v2.0.50727\ngen.exe"; 
      proc.StartInfo.Arguments = "uninstall " + Application.ProductName + " /nologo /silent"; 

      proc.Start(); 
      proc.WaitForExit(); 

      proc.StartInfo.FileName = winPath + @"\Microsoft.NET\Framework\v2.0.50727\ngen.exe"; 
      proc.StartInfo.Arguments = "install " + Application.ProductName + " /nologo /silent"; 

      proc.Start(); 
      proc.WaitForExit(); 

     } 

     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
} 
+4

này không hoạt động trên Windows 7 (và tôi đoán Vista), vì 'ngen' muốn chạy với tư cách Quản trị viên. –

+2

Đây không phải là thực tế sử dụng nhiều vì nó đòi hỏi quyền admin. Bản chất của nhấp chuột là nó không yêu cầu quyền quản trị để cài đặt, vì vậy việc thêm mã này sẽ không có ý nghĩa. – pmcilreavy

Các vấn đề liên quan