2009-07-09 47 views

回答

2

因爲它不是一個MSI,您不能使用Orca to edit the installer itself。我之前也寫過custom install actions以及我的MSI安裝程序。

既然你沒有太多的控制(如果有的話)在你的鬼安裝程序,我或許會寫一個自定義的可執行文件,以補充安裝程序,可之前或安裝後運行。這將創建一些額外的文件分發給您的客戶,但您可以將整個文件分發爲zip存檔。

首先,如果你想創建一個非託管的引導程序的相同方式的Visual Studio確實保證的先決條件安裝,你可以用一個腳本做到這一點通過的MSBuild類似如下:

<Project ToolsVersion="3.5" DefaultTargets="BuildBootstrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <BootstrapperFile Include="Microsoft.Net.Framework.2.0"> 
     <ProductName>Microsoft .NET Framework 2.0</ProductName> 
    </BootstrapperFile> 
    </ItemGroup> 

    <Target Name="BuildBootstrapper"> 
    <GenerateBootstrapper 
     ApplicationFile="CustomInstallerExecutable.exe" 
     ApplicationName="Pretty Title of Application Goes Here" 
     BootstrapperItems="@(BootstrapperFile)" 
     ComponentsLocation="Relative" /> 
    </Target> 

</Project> 

這將生成一個「setup.exe」,這是安裝程序的任何引導程序的事實上的文件名。事實上,如果你想確保用戶不小心跳過引導程序,直接進入安裝程序,你可以隱藏在「bin」文件夾或東西從zip文件的根目錄走鬼安裝。這樣,他們唯一直觀的選擇就是「setup.exe」。爲了客戶的利益,如果您需要非常清楚,請包含一個「README.txt」。

該引導程序還做了什麼,確保客戶端具有.NET 2.0 Framework作爲先決條件,以便您的「CustomInstallerExecutable.exe」可以用.NET編寫,而不是以非託管語言編寫。事實上,這種的MSBuild腳本將撲通一聲倒在.NET 2.0框架安裝您的新創建的引導程序在身旁,(因爲「ComponentsLocation」屬性的「相對」值)。如果您擔心Ghost Installer下載到您的客戶的原始下載大小會有所增加,您可以使用其他的屬性值來幫助用戶通過Web獲得.NET Framework。

現在,您的「CustomInstallerExecutable.exe」(用漂亮的託管C#編寫)可以在運行Ghost安裝程序之前(或之後)將額外文件放在機器上。我以前寫一些代碼從.NET可執行文件運行MSI:

string msiString = "blahBlah.msi"; 

// Kick off Update installer 
ProcessStartInfo startInfo = new ProcessStartInfo(
    "cmd.exe", 
    "/c start /wait msiexec.exe /i " + msiString); 
startInfo.WorkingDirectory = "bin"; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 

Process process = new Process 
{ 
    StartInfo = startInfo, 
    EnableRaisingEvents = true 
}; 
process.Exited += new EventHandler(process_Exited); 

process.Start(); 

我認爲你可以做一些非常相似打電話給你的鬼,而不是安裝一個MSI的。如果您在Ghost安裝程序之前運行此.NET可執行文件,則可以調用Ghost安裝程序進程,然後退出「CustomInstallerExecutable.exe」進程,而不是等待process.Exited事件觸發。此事件等待將更多地運行「安裝後」邏輯。

祝你好運,希望這是有幫助的。

相關問題