2012-09-27 56 views
3

我想爲我的應用程序創建安裝程序安裝程序。我已經下載的WiX 3.6並安裝它在VS 2012WiX安裝程序在2012年無法運行

  1. 創建簡單的WinForm應用程序
  2. 的WiX安裝項目添加到我的解決方案
  3. 右鍵點擊引用和我的WinForm應用程序添加到設置的參考
  4. 我構建解決方案並轉到安裝項目中的調試目錄,然後運行SetupProject1.exe.msi它不起作用,並關閉安裝程序對話框而沒有任何錯誤。

返回設定項目

  1. 上安裝項目並選擇屬性右擊
  2. 在安裝選項卡>輸出類型,將其更改爲executablefile.exe
  3. 建立它,去調試並運行SetupProject1.exe - 仍然不起作用

出了什麼問題?這是我的設置項目product.wxs

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="Natiloos" UpgradeCode="cfc2f4dd-2da5-49e2-9099-96968d75aaa4"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
    </Feature> 
</Product> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="SetupProject1" /> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <!-- TODO: Remove the comments around this Component element and  the ComponentRef below in order to add resources to this installer. --> 
     <!-- <Component Id="ProductComponent"> --> 

     <!-- </Component> --> 
    </ComponentGroup> 
</Fragment> 

我怎樣才能安裝程序建立正確?

+0

什麼版本的WiX您使用的是? –

回答

4

問題是你的安裝程序沒有安裝任何東西。將您的項目添加爲安裝程序的參考並不意味着安裝程序將包含您的項目輸出。在您的安裝項目中,您有:

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
    <!-- TODO: Remove the comments around this Component element and  the ComponentRef below in order to add resources to this installer. --> 
    <!-- <Component Id="ProductComponent"> --> 

    <!-- </Component> --> 
    </ComponentGroup> 
</Fragment> 

您需要添加文件......即,取消註釋<Component></Component>標籤並手動添加您的文件。每個文件有一個<Component>標記是很好的。

例子:

<Component Id="MyProgram.exe" Guid="PUT-GUID-HERE"> 
     <File Id="MyProgram.exe" KeyPath="yes" Source="Path_To_Output_Folder\MyProgram.exe" /> 
</Component> 
+0

VS2012有沒有辦法讓這個自動化呢?或者你是否被迫輸入XML? – Andrew

+0

您可以使用Heat工具自動運行:http://wix.sourceforge.net/manual-wix3/heat.htm。一般來說,我爲我的項目手動輸入它,但如果正在開發和不斷變化的內容(例如幫助文件或其他補充內容),請使用Heat。請注意,您*使用*可以在項目上運行熱量,但這是錯誤的,因此他們刪除了該功能。我通常會編寫一個調用Heat的包裝器,然後將生成的xml調整爲我想要的。 – BryanJ

0

您正在描述的類型的WiX項目生成帶.msi擴展名的MSI文件。這些安裝程序不是直接運行,而是使用msiexec.exe運行。 Windows資源管理器爲您完成此默認情況下,當您雙擊它們,但是你可以明確地使用如下

msiexec MyInstaller.msi 

注意一個命令,MSI文件是從可執行完全不同的呼叫msiexec - 改變輸出名稱您安裝產生具有.exe擴展名,或重命名該文件以使擴展名不起作用。

如果你想產生一個基於.exe的安裝程序,那麼你需要的是一個引導程序。 WiX有一個叫做Burn的,但是如果我是你的話,我會擔心讓MSI先工作,然後擔心創建一個可執行的引導程序。

+0

默認情況下在msi上,它不起作用 – motevalizadeh

+0

@motevallizadeh定義「不起作用」。目前您的安裝程序不會執行任何操作,除了向添加/刪除程序列表中添加extry外,您還沒有指定要安裝的內容。 – Justin

+0

看看:HTTP://wix.sourceforge.net/manual-wix3/authoring_first_votive_project.htm – motevalizadeh

相關問題