无法无声执行WiX脚本中的命令

时间:2015-11-20 10:58:55

标签: wix

下面是我的代码,当我尝试安装我的MSI时,它会执行所有操作,但下面的行显示没有执行的迹象。

                <Binary Id="unzipExeId" SourceFile="unzip.exe"/>
                <Property Id="WixQuietExec64CmdLine" Value="[#$(var.InstallationLocation)\unzip.exe]"/>
                <CustomAction Id="unzipAction" BinaryKey="unzipExeId" DllEntry="WixQuietExec64" Execute='deferred' Return ='asyncWait' Impersonate='no'/>
                <InstallExecuteSequence>
                    <Custom Action='unzipAction' Before='InstallFinalize'/>
                </InstallExecuteSequence> 

我有没有想念。

但是当我尝试这段代码时

                <Binary Id="unzipExeId" SourceFile="unzip.exe"/>
                <CustomAction Id="unzipAction" BinaryKey="unzipExeId" ExeCommand="START /B unzip.exe" Execute='deferred' Return ='asyncWait' Impersonate='no'/>
                <InstallExecuteSequence>
                    <Custom Action='unzipAction' Before='InstallFinalize'/>
                </InstallExecuteSequence>

一切正常但是unzip.exe的执行会导致机器弹出。 exe没有安静地安装。但我需要默默地执行EXE。 在此先感谢

1 个答案:

答案 0 :(得分:1)

它可能与DllEntry有关,而不是使用“WixQuietExec64”尝试使用“CAWixQuietExec64”。

有一个未解决的问题。 http://wixtoolset.org/issues/4802/

这是一种常见用途:

#include <stdio.h>
#include <math.h>

int main()
{
    int test, n, i, j, x, resul;
    int a[200], m, temp;
    scanf("%d", &test);
    for (i = 0; i < test; i++) {
        a[0] = 3;  // initializes array with only 1 digit, the digit 1.
        m = 1;     // initializes digit counter
        scanf("%d", &n);
        temp = 0;  // Initializes carry variable to 0.
        for (i = 1; i < n; i++) {
            for (j = 0; j < m; j++) {
                x = a[j] * 2 + temp; //x contains the digit by digit product
                a[j] = x % 10; //Contains the digit to store in position j
                temp = x / 10; //Contains the carry value that will be stored on later indexes
            }
            while (temp > 0) { //while loop that will store the carry value on array.
                a[m] = temp % 10;
                temp = temp / 10;
                m++; // increments digit counter
            }
        }
        for (i = m - 1; i >= 0; i--) //printing answer
            printf("%d", a[i]);
    }
    return 0;
}