2012-02-06 60 views
3

快捷方式從開始菜單和allprograms目錄很好,但在桌面上的快捷方式是完全空白/損壞?InnoSetup - 桌面上的快捷方式損壞

#define MyAppName "MyAppName " 
#define MyAppVersion "1" 
#define MyAppPublisher "MyAppName" 
#define MyAppURL "http://www.MyAppName.com/" 
#define MyAppExeName "MyAppName.exe" 


[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId=*** 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName={pf}\{#MyAppName} 
DefaultGroupName={#MyAppName} 
OutputDir=C:\***\{#MyAppVersion} 
OutputBaseFilename=myapp_{#MyAppVersion} 
Compression=lzma 
SolidCompression=yes 

[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 

[Tasks] 
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 

[Files] 
Source: "C:\***.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\***\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "***\bin\vcredist_x86.exe"; DestDir: {app}\bin\; 
; NOTE: Don't use "Flags: ignoreversion" on any shared system files 

[Icons] 
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" 
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 
Name: "{group}\Manual"; Filename: "{app}\Manual.pdf" 


[Run] 
Filename: {app}\bin\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; WorkingDir: {app}\bin; StatusMsg: Installing Visual Studio 2010 C++ CRT Libraries... 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 

[Code] 
///////////////////////////////////////////////////////////////////// 
function GetUninstallString(): String; 
var 
    sUnInstPath: String; 
    sUnInstallString: String; 
begin 
    sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1'); 
    sUnInstallString := ''; 
    if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then 
    RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString); 
    Result := sUnInstallString; 
end; 


///////////////////////////////////////////////////////////////////// 
function IsUpgrade(): Boolean; 
begin 
    Result := (GetUninstallString() <> ''); 
end; 


///////////////////////////////////////////////////////////////////// 
function UnInstallOldVersion(): Integer; 
var 
    sUnInstallString: String; 
    iResultCode: Integer; 
begin 
// Return Values: 
// 1 - uninstall string is empty 
// 2 - error executing the UnInstallString 
// 3 - successfully executed the UnInstallString 

    // default return value 
    Result := 0; 

    // get the uninstall string of the old app 
    sUnInstallString := GetUninstallString(); 
    if sUnInstallString <> '' then begin 
    sUnInstallString := RemoveQuotes(sUnInstallString); 
    if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then 
     Result := 3 
    else 
     Result := 2; 
    end else 
    Result := 1; 
end; 

///////////////////////////////////////////////////////////////////// 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if (CurStep=ssInstall) then 
    begin 
    if (IsUpgrade()) then 
    begin 
     UnInstallOldVersion(); 
    end; 
    end; 
end; 
+0

我真的不知道爲什麼這個問題downvoted,也許誰做觀衆可能啓發我 – Marko29 2012-02-06 03:45:03

+0

也許他正在尋找更多的細節,如創建損壞的快捷方式的腳本代碼。不過,問這是獲得它的一種更好的方式,而不僅僅是低調。 – 2012-02-06 04:25:53

+0

它確實是更有成效的建議,謝謝布拉德斯托爾斯 – Marko29 2012-02-06 05:06:11

回答

0

看來,問題是圖標這是16×16和32×32只,上面顯示了桌面 罰款使用win7的